依赖瀑布的单任务
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
。