Async.retry在等待间隔之前立即执行

async.retry({times : 25,interval : 30000},myFunction.bind(functionData),function(err,results){ console.log("===================================") console.log("Async function finished processing") return; }) 

myFunction被立即调用,这也是默认的5倍。 通话之间也没有等待期

       

网上收集的解决方案 "Async.retry在等待间隔之前立即执行"

这是我认为的一个版本问题。

老版本的async.retry只能用一个数字作为第一个agument来调用(例如参见v1.2.0文档 )

它不接受opts对象。 因此,如果您将其传入而不是第一个参数的数字,则默认为无间隔,重试计数为5。

我有这个问题使用库的v0.9.0,更新到v1.4.2修复了这个问题。

重试取决于你的函数中的callback。 如果callback的第一个参数不是虚假的,那么它将根据您的timesinterval设置重试。 例如:

 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秒