首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nest async.waterfall in async.forEachSeries

nest async.waterfall in async.forEachSeries
EN

Stack Overflow用户
提问于 2013-11-17 19:35:31
回答 1查看 273关注 0票数 0

我构造了这个简单的示例来说明我的异步问题:

代码语言:javascript
复制
var array = ["a", "b", "c", "d"];

async.forEachSeries(array, function(entry, callback){
    console.log(entry);

    async.waterfall([
       function(cb){
           console.log("step 1");
           cb(null,  "x");
       },
       function(param, cb){
           setTimeout(function(){console.log(param, "step 2");}, 1000);
           cb(null, "xx");
       },
       function(param, cb){
           console.log(param, "step 3");
           cb("xxx");
       }

    ], function(result, err){
        console.log(result, "waterfall done");
        callback();
    });

}, function(err){
    if(err) console.log("ERROR: "+ err);
});

它的输出是

代码语言:javascript
复制
    a
    step 1
    step 3 xx
    end xxx
    b
    step 1
    step 3 xx
    end xxx
    c
    step 1
    step 3 xx
    end xxx
    d
    step 1
    step 3 xx
    end xxx
    step 2 x
    step 2 x
    step 2 x
    step 2 x

如何确保瀑布中的函数等待上一次的完成?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-17 19:43:49

我相信,对于步骤2,您必须将cb(null, "xx");放在setTimeout回调中。

代码语言:javascript
复制
setTimeout(function() {
    console.log(param, "step 2"); 
    cb(null, "xx"); 
}, 1000);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20035172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档