依賴瀑布的單任務
async.waterfall(tasks, afterTasksCallback) 將執行一組任務。每個任務都在另一個任務之後執行**,任務的結果將傳遞給下一個任務**。作為 async.series()
,如果任務失敗,非同步停止執行並立即呼叫主回撥。
任務成功完成後,非同步呼叫主回撥,包含所有錯誤和所有任務結果。
function getUserRequest(callback) {
// We simulate the request with a timeout
setTimeout(function() {
var userResult = {
name : 'Aamu'
};
callback(null, userResult);
}, 500);
}
function getUserFriendsRequest(user, callback) {
// Another request simulate with a timeout
setTimeout(function() {
var friendsResult = [];
if (user.name === "Aamu"){
friendsResult = [{
name : 'Alice'
}, {
name: 'Bob'
}];
}
callback(null, friendsResult);
}, 500);
}
async.waterfall([
getUserRequest,
getUserFriendsRequest
],
function(err, results) {
if (err) {
return console.error(err);
}
console.log(JSON.stringify(results));
});
結果: results
包含瀑布最後一個函式的第二個回撥引數,在這種情況下是 friendsResult
。