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

时间:2015-09-12 09:57:04

标签: javascript node.js asynchronous async.js

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

立即调用myFunction,这也是默认的5次。呼叫之间没有等待时间

2 个答案:

答案 0 :(得分:2)

这是我认为的版本问题。

async.retry的旧版本只能使用数字作为第一个文章来调用(例如参见v1.2.0 docs

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

我使用库的v0.9.0也有同样的问题,更新到v1.4.2解决了这个问题。

答案 1 :(得分:0)

重试取决于函数内的回调。如果回调的第一个参数不是假的,那么它将根据您的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秒