實現了承諾隊列(通過q庫)。承諾隊列中的Async.waterfall未能顯示縮進行爲
PQFn1-(然後) - PQFn2-(然後)-....
的PQFn1傳遞值的回調函數(使用Q.defer實現),它返回一個結果的數組。 所以從PQFn1到ProcessResultFn([值]) 內ProcessResultFn-流量開關
ProcessResultFn(values){
var deferred = Q.defer();
async.map(values,FetchResult,function(err,res){
if (err) {
deferred.reject(err);
return deferred.promise;
} else {
deferred.resolve(res);
return deferred.promise;
}
})
}
Function FetchResult(value,done){
async.waterfall(Fn1,Fn2,Fn3,done);
}
}
流工作正常,直到呼叫到達Fn1的。然而,只要Fn1調用cb() - 將呼叫傳遞給Fn2。流程切換到承諾隊列的PQFn2,甚至無需等待ProcessResultFn的結果。 稍後,當事件循環接收到(我記錄它)時,Fn2和Fn3的調用也會執行。然而,從PQFn1到PQFn2的初始結果總是返回undefined。 有人可以解釋爲什麼會發生這種情況。
你可以在問題中包含'FN1'的文本嗎? – guest271314