2011-09-07 51 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); }