使用 'async' 并忽略调用 'callback'

Using 'async' and neglecting to invoke 'callback'

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

我的可靠性问题之一是无法调用回调。例如

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 分钟内完成,则调用一些错误处理程序。

非常感谢

为它制作你自己的实现超时的包装器。

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);