我正在尝试在我的项目中嵌入V8。由于我使用libev来监听套接字和事件,并希望能够使用JS编写事件脚本,我希望能够在短时间内运行v8,然后跳回到C ++来检查事件等,然后返回运行JS代码。由于我之前没有做太多的脚本嵌入,我确信有一些聪明的方法,通常这样做,所以所有的想法都受到赞赏。
答案 0 :(得分:0)
我发现这样做最干净的方法是在JS中创建setTimeout和clearTimeout函数。 setTimeout创建一个ev::Timer
,它有一个在一定时间后调用的回调。这使得当你调用JS函数时,你继续执行它直到它返回,但是该函数可以设置一些超时,这些超时在你退出当前的JS之后才被调用,并且没有发生任何其他的自由执行期间的事件,在这种情况下,首先处理这些事件(在C ++中)。这种方法的局限性在于编写JS的编码器必须记住不要编写进入永恒while循环或类似函数的函数。循环是这样完成的:
function repeat() { setTimeout(repeat, 0); }