【问题标题】:Using async with asynchronous functions将 async 与异步函数一起使用
【发布时间】:2013-08-14 14:06:01
【问题描述】:

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

例如,考虑在某个节点模块中定义的一些异步函数foo(arg1, arg2, ..., argN, callback)。假设我想在asyncwaterfall(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。 帮忙?

【问题讨论】:

    标签: node.js asynchronous node-async


    【解决方案1】:

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

    async.waterfall([
      async.apply(foo, x1, x2, nX) //don't use callback, async will add it,
      someOtherFunction
    ], function (error, finalResult) {});
    

    【讨论】:

    • 哦,好的,效果很好!我从文档中假设必须在包装函数结束之前调用 callback
    • 不,它可能是 10 层深度,用于所有异步关心。如果它根本不被调用,async 将永远等待。
    • 太棒了!这确实让事情变得简单!感谢您的宝贵时间
    猜你喜欢
    • 2021-06-06
    • 2023-03-29
    • 1970-01-01
    • 2014-06-18
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多