以下是使用async.parallel
的简单示例:
var fakeTimer = 0;
async.parallel({
one: function(callback) {
if (fakeTimer < 2) {
callback(new Error('too soon!'), null);
fakeTimer++;
} else {
callback(null, 'I am one');
}
},
two: function(callback) {
callback(null, 'I am two');
}
}, function(err, results) {
if (err) {
console.log('failed!');
} else {
console.log(results);
}
});
当它运行时,它当然总是以失败告终。我要做的是继续重试,直到fakeTimer
变得足够大,one
功能成功。
因此可以重试整个async.parallel
,例如5次,或仅one
功能。我知道有async.retry
功能,但我无法理解如何将其与async.parallel
结合起来以达到我想要的效果。
我认为理想情况下应该重试整个async.parallel
,以便在任何并行分支中发生错误时它都能正常工作,但是看到整体重试和每个分支的示例会很棒重试。
答案 0 :(得分:0)
以下似乎有效:
var fakeTimer = 0;
var parallelFunctions = {
one: function(callback) {
if (fakeTimer < 2) {
callback(new Error('too soon!'), null);
fakeTimer++;
} else {
callback(null, 'I am one');
}
},
two: function(callback) {
callback(null, 'I am two');
}
};
var doThemInParallel = function(callback) {
async.parallel(parallelFunctions, function(err, results) {
callback(err, results);
});
};
var retries = 2; // must be > 2 to succeed
async.retry(retries, doThemInParallel, function(err, results) {
console.log(err, results);
});