【问题标题】:Using async.series in node.js在 node.js 中使用 async.series
【发布时间】:2014-06-19 23:25:50
【问题描述】:

我是 Node.js 的新手。我喜欢 Node.js 的一件事是它的异步特性。然而,此时此刻,我有一个同步操作的需求。为了 出于这个原因,我一直在研究异步模块。但是,我仍然无法弄清楚我要做什么。

我正在尝试执行 2 个静态操作,以及按顺序执行的可变数量的其他操作。全部完成之后,我就想做点什么。换句话说,在psedo代码中,我正在尝试做:

var total = getValue();

executeOperation1();
executeOperation2(); 
for (var i=0; i<total; i++) {
    executeOperationX(i);
}
doCompletionOperation();

我的每个主要操作(executeOperation1()、executeOperation2() 和 executeOperationX(...))都是异步运行的。据我了解,我需要使用 异步系列。但是,我不确定这在语法上是什么样的。有人可以告诉我怎么做吗?

谢谢!

【问题讨论】:

    标签: node.js async.js


    【解决方案1】:

    您需要一些回调来处理异步函数。 async.series 看起来像这样:

    getValue(function(value){
        var total = value;
        async.series([
            function(callback){
                executeOperation1(function(){
                    callback();
                });
            },function(callback){
                executeOperation2(function(){
                    callback();
                });
            },function(callback){
                   for(var i=0;i<total;i++){        
                     executeOperationX(i);
                   }
            }],function(){
                  doCompletionOperation();
            });
       });
    

    【讨论】:

    • 感谢您的回复。但是,我不明白传递给函数的“回调”参数来自哪里。你能给我解释一下吗?
    • async 将其传递给您。当您调用async.series 时,它知道您将向它提供一个函数列表,每个函数都期望回调作为参数。它会将回调传递给您,因为这就是您让它知道您的功能已完成并且可以继续执行下一个功能的方式。如果您将错误传递给提供的回调,它将跳过数组中的任何后续函数,并直接进入最后列出的函数 A-0-,您可以在此处处理出现的任何错误。
    猜你喜欢
    • 2012-06-02
    • 2015-05-22
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2012-09-15
    • 2013-04-04
    相关资源
    最近更新 更多