1

我知道这听起来很愚蠢,但我不明白如何使用async来处理现有的异步函数。

例如,考虑foo(arg1, arg2, ..., argN, callback)在某个节点模块中定义的一些异步函数。假设我想在async'swaterfall(tasks,[callback])函数中使用它。我怎么可能这样做?

//original call
foo(x1,x2,xN, function goo(err, res) {
    // do something 
});

//using async
async.waterfall([
   function(callback) {
       foo(x1,x2,...,xN, callback);
   }
], function goo(err, res) {
   // do something
}); 

但我不能这样做,因为callback需要在函数结束之前调用。帮助?

4

1 回答 1

3

是的,你所拥有的将起作用。callback只是告诉 async,“我完成了,转到下一个”。您还可以使用async.apply自动生成这些小包装函数:

async.waterfall([
  async.apply(foo, x1, x2, nX) //don't use callback, async will add it,
  someOtherFunction
], function (error, finalResult) {});
于 2013-08-13T05:14:21.367 回答