【问题标题】:How to implement set of async task with some condition in series?如何在一系列条件下实现一组异步任务?
【发布时间】:2016-10-25 06:10:46
【问题描述】:

我必须在nodejs中编写以下代码:

val1 = async1()
if(val1 == 0){
 val1 = async2()
}
val2 = async3(val1)

在上面的代码中,val1val2是异步函数async1()async2()async3()返回的值,我该如何实现呢?

【问题讨论】:

  • val1 是一个承诺吗? async1 有回调吗?向我们展示实际代码。
  • @naomik 实际上上面是一个伪代码。 val1 是一个整数值,async1 可以设计为接受回调。
  • 如果 async1async2async3 在你的控制范围内,我建议你让它们返回 Promise。与回调相比,Promise 提供了更好的流量控制机制。

标签: node.js asynchronous q async.js


【解决方案1】:

你可以使用async

上面的伪代码可以通过waterfall方法实现。

示例实现:

async.waterfall([
    function(callback){
        callback(null, async1());
    },
    function(val1, callback){
        if(val1==0){
            callback(null, async2());
        } else {
            callback(null, val1);
        }
    }, function(val1, callback){
        callback(null, async3(val1));
    }
    ], function(error, val2){
            <you get val2 here>
});

【讨论】:

    猜你喜欢
    • 2020-02-28
    • 2013-01-05
    • 2016-12-30
    • 2016-05-22
    • 1970-01-01
    • 2019-03-01
    • 2017-10-23
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多