我无法让我的异步代码与node.js一起使用
尝试异步和步骤库 - 代码只返回第一个函数(似乎没有完成其余的)。我做错了什么?
谢谢!
var step = require('step');
step(
function f1(){
console.log('test1');
},
function f2(){
console.log('test2');
},
function finalize(err) {
if (err) { console.log(err);return;}
console.log('done with no problem');
}
);
或者这个:
var async = require('async');
async.series([
function f1(){
console.log('test1');
},
function f2(){
console.log('test2');
},
function finalize(err) {
if (err) { console.log(err);return;}
console.log('done with no problem');
}
]);
答案 0 :(得分:3)
Step.js期待每一步的回调。使用Step的函数也应该回调结果而不是返回它。
所以,让我们说你有:
function pullData(id, callback){
dataSource.retrieve(id, function(err, data){
if(err) callback(err);
else callback(data);
});
}
使用Step就像:
var step = require('step');
function getDataFromTwoSources(callback){
var data1,
data2;
step(
function pullData1(){
console.log('test1');
pullData(1, this);
},
function pullData2(err, data){
if(err) throw err;
data1 = data;
console.log('test2');
pullData(2, this);
},
function finalize(err, data) {
if(err)
callback(err);
else {
data2 = data;
var finalList = [data1, data2];
console.log('done with no problem');
callback(null, finalList);
}
}
);
};
这将使它继续完成这些步骤。
请注意,我个人更喜欢异步,原因有两个:
答案 1 :(得分:2)
我只能跟async
说话,但是为了那个你传递给async.series
的数组中的匿名函数必须调用callback
参数,当函数是函数时,它会传递给那些函数。完成了它的处理。如:
async.series([
function(callback){
console.log('test1');
callback();
},
function(callback){
console.log('test2');
callback();
}
]);