如果asyncFunction
已實施像下面這樣:
function asyncFunction(n) {
process.nextTick(function() { /* do some operations */ });
}
那麼你就沒有當asyncFunction
實際執行完畢,因爲它留下的調用堆棧辦法知道。所以當執行完成時需要通知。
function asyncFunction(n, callback) {
process.nextTick(function() {
/* do some operations */
callback();
});
}
這是使用簡單的回調機制。如果你想使用一個奇怪的模塊來處理這個問題,那就繼續吧。但是實現類似於基本回調的方法可能並不美觀,但並不困難。
var array = [1, 2, 3];
var data = 0;
var cntr = 0;
function countnExecute() {
if (++cntr === array.length)
executeOtherFunction(data);
}
for(var i = 0; i < array.length; i++){
asyncFunction(data++, countnExecute);
}
這是你的實際代碼,還是試圖簡化它?實際上,在'console.log'行的'data'值是3,這正是你所期望的。 –
已編輯。是的,這不是確切的代碼。我給出了一個簡化的邏輯,但這是它的確切流程。 – Gaurav
好的,但我的觀點是你發佈的代碼完全符合人們的期望。你應該簡化它,直到它表現出有問題的行爲。 –