我有一個節點應用程序,它是而不是一個web應用程序 - 它在返回1之前完成了一系列異步任務。緊接在返回之前,程序的結果被打印到控制檯。如何編寫一個node.js函數,等待事件在'返回'之前觸發?
如何確保在返回之前完成所有異步工作?通過在調用res.end()之前確保完成所有完成的任務,我能夠在Web應用程序中實現類似於此的任務,但在讓腳本返回之前,我沒有任何要調用的最終「事件」的等價物。
當前正在嘗試等待,直到callStack爲空爲止,請參閱以下我的(已損壞)函數。我剛剛發現這是一種無意義的方法,因爲在進入processObjWithRef中調用的任何異步函數之前,節點會等待processHub完成。
function processHub(hubFileContents){
var callStack = [];
var myNewObj = {};
processObjWithRef(samplePayload, myNewObj, callStack);
while(callStack.length>0){
//do nothing
}
return 1
}
注:我已經嘗試了許多次以前實現這種行爲與像異步庫(見我在How can I make this call to request in nodejs synchronous?相關的問題),所以請大家建議基於「任何答案之前,回答和評論有考慮只是使用異步'。
「我如何確保所有異步工作完成後才返回?」是一個毫無意義的問題 - 在所有異步任務完成之前,控制永遠不會返回到shell,所以在最後一個異步函數完成修復我的問題之前,請保留控制檯輸出。感謝所有提交答案。 – Trindaz 2012-03-30 03:48:51