2015-09-12 95 views
4
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在等待間隔之前立即執行

+0

你能顯示'myFunction'的代碼嗎? – Robbie

回答

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 

每次嘗試

+0

async.retry(OPTS,函數(回調){ 的console.log( 「XXXX」); 返回回調(新錯誤( 「SDA」));} ,函數(ERR){ 回調(ERR); }); –

+0

即使當我使用{times:25,interval:60000} –

+0

以外,async.retry仍然執行5次,除了未定義的'callback'之外,您粘貼的代碼片段是第一條評論。即它重試25次。 – Robbie

2

這是一個問題版本我認爲之間有1秒的時間間隔。

async.retry舊版本只能使用一個號碼作爲第一agument調用(如見v1.2.0 docs

它不接受opts對象。所以如果你通過它而不是第一個參數的數字,它默認沒有間隔和重試計數爲5.

我有這個問題使用庫的v0.9.0,更新到v1.4.2固定問題。

相關問題