Node.js中的asynchronous或步骤

我无法让我的asynchronous代码与node.js一起工作

尝试asynchronous和步骤库 – 代码只返回第一个函数(似乎没有通过rest)。 我究竟做错了什么?

谢谢!

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'); } ]); 

Step.js期待每一步的callback。 此外,使用步骤的function应callback的结果,而不是返回它。

所以,假设你有:

 function pullData(id, callback){ dataSource.retrieve(id, function(err, data){ if(err) callback(err); else callback(data); }); } 

使用步骤将工作如下:

 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); } } ); }; 

这将让它继续完成这些步骤。

请注意,我个人比较喜欢asynchronous的原因有两个:

  • 步骤捕获所有抛出的错误,并与他们进行callback; 这改变了应用程序的行为,当这些库应该只是清理代码的外观。
  • asynchronous有更好的组合选项,看起来更干净

我只能说async ,但为此,传递给async.series的数组中的匿名函数必须调用在函数处理完成后传递给这些函数的callback参数。 如:

 async.series([ function(callback){ console.log('test1'); callback(); }, function(callback){ console.log('test2'); callback(); } ]);