NodeJS async异步问题
function a(){
var async = require('async');
async.parallel([
function(callback){
callback(null, 'one');
},
function(callback){
callback(null, 'two');
}
],
function(err, results){
return results;
});
}
function b(){
var data = a();
console.log(data);//他会先打印出undefined,再打印出[one,two]
}
这个是为什么啊?不应该等到a()方法执行完再输出吗?
xiaoyue
9 years, 5 months ago
Answers
a 是一个异步方法,所以当代码执行到
console.log(data)
时, data 的值还是 undefined
修改后的代码:
js
var async = require('async'); function a(callback){ async.parallel([ function(callback){ callback(null, 'one'); }, function(callback){ callback(null, 'two'); } ], function(err, results){ callback(null, results); }); } async.waterfall([a, function(data, callback){ console.log(data); //正确打印出 [one,two] }])
注意
一般 node 中的异步方法都是使用回调函数来传递返回值,这个回调函数的第一个参数一般是错误信息,没有的话传 null .
参考
1.
https://github.com/caolan/async#waterfall
帕秋莉姆Q
answered 9 years, 5 months ago