猿问

node.js for循环中async.series的问题

尝试使用https://github.com/caolan/async#series来实现一些串行操作,不过出现了一个问题,请看代码:
async.series({
one:function(callback){
setTimeout(function(){
callback(null,1);
console.log("one");
},2000);
},
two:function(callback){
setTimeout(function(){
callback(null,2);
console.log("two");
},1000);
}
},
function(err,results){
//resultsisnowequalto:{one:1,two:2}
});
以上代码输出
one
two
这没有问题。
但是在for循环中调用async.series
for(vari=0;i<3;i++){
async.series({
one:function(callback){
setTimeout(function(){
callback(null,1);
console.log("one");
},2000);
},
two:function(callback){
setTimeout(function(){
callback(null,2);
console.log("two");
},1000);
}
},
function(err,results){
//resultsisnowequalto:{one:1,two:2}
});
}
个人的预期是输出
one
two
one
two
one
two
但实际结果是:
one
one
one
two
two
two
求解答。
环境
MacOSX10.8.5
node@v0.10.15
async@0.2.9
慕尼黑8549860
浏览 422回答 2
2回答

开满天机

另外也建议你把callback(null,1);console.log("one");倒个顺序:console.log("one");callback(null,1);因为等callback执行完了再执行console的话,谁知道这之间会多发生一些什么。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答