1
我目前正在試驗將V8嵌入到我的項目中。由於我使用libev來監聽套接字和事件,並希望能夠使用JS腳本事件,所以我希望能夠在短時間內運行v8,然後跳回到C++來檢查事件等,然後返回運行JS代碼。由於我之前沒有做過太多的腳本嵌入工作,所以我確信有一些聰明的方法可以完成這個任務,所有的想法都會被讚賞。在V8中異步運行C++和JS代碼
我目前正在試驗將V8嵌入到我的項目中。由於我使用libev來監聽套接字和事件,並希望能夠使用JS腳本事件,所以我希望能夠在短時間內運行v8,然後跳回到C++來檢查事件等,然後返回運行JS代碼。由於我之前沒有做過太多的腳本嵌入工作,所以我確信有一些聰明的方法可以完成這個任務,所有的想法都會被讚賞。在V8中異步運行C++和JS代碼
我發現這樣做的最簡潔的方法是在JS中創建setTimeout和clearTimeout函數。 setTimeout創建一個ev::Timer
,它有一段時間後調用的回調函數。這使得當你調用一個JS函數時,你將繼續執行它直到它返回,但是該函數可以設置一些超時,這些超時在你退出當前的JS並且沒有發生任何其他的解除在執行過程中的事件,在這種情況下,首先處理這些事件(使用C++)。這種方法的侷限性在於編寫JS的編碼人員必須記住,不要編寫進入永恆的函數,而是循環或類似的函數。循環是這樣做的:
function repeat() { setTimeout(repeat, 0); }
看看[Node.js](http://nodejs.org/)的源代碼,它確實正在嘗試做什麼。 –