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()方法执行完再输出吗?
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
我没看懂你想问什么……你想问undefined
是怎么来的么?undefined
是console.log
这句话的返回值,["one", "two"]
是console.log
的控制台输出。
我不太相信它能打印出 [one,two]