我对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分钟内完成,则调用一些错误处理程序。
非常感谢
答案 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);