在Node.js中,我怎样才能使用node-seq进行嵌套callback

我正在通过@substack与node-seq模块一起工作,但碰到了一点碰撞。

我想要做的是:2个并行asynchronous操作,每个操作都对其结果做了一些事情,然后一旦完成,就将修改后的结果发送给一个终止操作。

经过一番修改,我得到了这个代码基本上工作:

var Seq = require('seq'); Seq() .par(function () { console.log('starting action 1'); var self = this; someModule.someAsyncMethod(function(result) { // do some stuff with result console.log('finishing action 1'); self(result); }); }) .par(function () { console.log('starting action 2'); var self = this; someModule.someAsyncMethod(function(result) { // do some stuff with result console.log('finishing action 2'); self(result); }); }) .seq(function(result1, result2) { console.log('all actions done'); }); ; 

问题是,self(result)将结果发送到console.log。 我已阅读文档,但不明白为什么这是。

我的问题是:

1)有没有办法closures自我(结果)的这种logging行为?

2)有没有更好的方法来做到这一点?

谢谢你的帮助!

我相信你应该做self(null, result) 。 典型的callback将错误作为第一个参数,结果作为第二个参数。

另外,我认为你的最终.seq将采用结果数组而不是result1, result2 。 看看http://substack.net/seq

尝试:

 Seq() .par(function () { console.log('starting action 1'); var self = this; someModule.someAsyncMethod(function(result) { // do some stuff with result console.log('finishing action 1'); self(null, result); }); }) .par(function () { console.log('starting action 2'); var self = this; someModule.someAsyncMethod(function(result) { // do some stuff with result console.log('finishing action 2'); self(null, result); }); }) .seq(function(result1, result2) { console.log('all actions done'); }); ;