async.retry({times : 25,interval : 30000},myFunction.bind(functionData),function(err,results){
console.log("===================================")
console.log("Async function finished processing")
return;
})
立即调用myFunction,这也是默认的5次。呼叫之间没有等待时间
答案 0 :(得分:2)
这是我认为的版本问题。
async.retry
的旧版本只能使用数字作为第一个文章来调用(例如参见v1.2.0 docs)
它不接受opts
对象。因此,如果您传入它而不是第一个参数的数字,则默认为无间隔且重试次数为5.
我使用库的v0.9.0也有同样的问题,更新到v1.4.2解决了这个问题。
答案 1 :(得分:0)
重试取决于函数内的回调。如果回调的第一个参数不是假的,那么它将根据您的times
和interval
设置重试。例如:
var async = require('async');
var count = 0;
var functionData = { some: 'data' };
var myFunction = function(callback, results) {
console.log(++count);
process.nextTick(function() {
if (count < 5) { // Fail 5 times
return callback({ message: 'this failed' }, null);
}
callback(null, { message: 'this succeeded' });
});
};
async.retry({times : 25, interval : 1000}, myFunction.bind(functionData), function(err, results) {
console.log("===================================")
console.log("Async function finished processing")
return;
});
输出:
1
2
3
4
5
===================================
Async function finished processing
每次尝试间隔1秒