我构造了这个简单的示例来说明我的异步问题:
var array = ["a", "b", "c", "d"];
async.forEachSeries(array, function(entry, callback){
console.log(entry);
async.waterfall([
function(cb){
console.log("step 1");
cb(null, "x");
},
function(param, cb){
setTimeout(function(){console.log(param, "step 2");}, 1000);
cb(null, "xx");
},
function(param, cb){
console.log(param, "step 3");
cb("xxx");
}
], function(result, err){
console.log(result, "waterfall done");
callback();
});
}, function(err){
if(err) console.log("ERROR: "+ err);
});它的输出是
a
step 1
step 3 xx
end xxx
b
step 1
step 3 xx
end xxx
c
step 1
step 3 xx
end xxx
d
step 1
step 3 xx
end xxx
step 2 x
step 2 x
step 2 x
step 2 x如何确保瀑布中的函数等待上一次的完成?
谢谢
发布于 2013-11-17 19:43:49
我相信,对于步骤2,您必须将cb(null, "xx");放在setTimeout回调中。
setTimeout(function() {
console.log(param, "step 2");
cb(null, "xx");
}, 1000);https://stackoverflow.com/questions/20035172
复制相似问题