使用'async'而忽略调用'回调'

时间:2015-04-14 20:27:07

标签: node.js asynchronous

我对node.js比较陌生,想知道如何使我的异步代码更可靠。专注于使用“异步”的代码(由于遗留原因,还没有承诺)。

我的一个可靠性问题是无法调用回调。 E.g。

async.series([
       function(callback){
           if(..)
              console.log("invalid input, try again"); // BUG: NO CALLBACK!
           else
              callback(null, 'ok');
       },
       function(callback){
           ...
       }
  ],
  function(err,result){ handleErrorOrResult(err,result);} // MIGHT NOT BE REACHED
);

这段代码可能永远不会完成(永远不会达到'handleErrorOrResult'),我甚至不知道出了什么问题。由于这个坑很容易陷入困境,我想知道是否有现成的库解决方案呢?任何想法都是受欢迎的,但是一个方向可能是超时:如果整个事情没有在5分钟内完成,则调用一些错误处理程序。

非常感谢

1 个答案:

答案 0 :(得分:0)

为它实现超时的自己的包装。

var myAsync = {
  series: function (callbacks, timeout, done) {
    var timeoutId = setTimeout(function () {
      done("Maximum Time Exceeded for method!");
    }, timeout);
    async.series(callbacks, function () {
      clearTimeout(timeoutId);
      done.apply(this, arguments);
    });
  }
}

现在您可以使用它:

myAsync.series(functions, functions.length * 500, callback);