2011-09-07 50 views
1

我目前正在试验将V8嵌入到我的项目中。由于我使用libev来监听套接字和事件,并希望能够使用JS脚本事件,所以我希望能够在短时间内运行v8,然后跳回到C++来检查事件等,然后返回运行JS代码。由于我之前没有做过太多的脚本嵌入工作,所以我确信有一些聪明的方法可以完成这个任务,所有的想法都会被赞赏。在V8中异步运行C++和JS代码

+1

看看[Node.js](http://nodejs.org/)的源代码,它确实正在尝试做什么。 –

回答

0

我发现这样做的最简洁的方法是在JS中创建setTimeout和clearTimeout函数。 setTimeout创建一个ev::Timer,它有一段时间后调用的回调函数。这使得当你调用一个JS函数时,你将继续执行它直到它返回,但是该函数可以设置一些超时,这些超时在你退出当前的JS并且没有发生任何其他的解除在执行过程中的事件,在这种情况下,首先处理这些事件(使用C++)。这种方法的局限性在于编写JS的编码人员必须记住,不要编写进入永恒的函数,而是循环或类似的函数。循环是这样做的:

function repeat() { setTimeout(repeat, 0); }