Функция async.retry запускается единожды

Не могу найти нормальное объяснение по использованию функции retry из библиотеке async дока

var async = require('async');

function callFunc(data, time, name, callback) {
     console.log("#")
     callback({message: data, time, name}, null); //error
     // callback(null, {message: "ok"});               // ok
}


var func = callFunc.bind(null, "data", "time", "name", function (err, data) {
     console.log(data);
     return err;
})
async.retry({times: 3, interval: 1000}, func, function (err, results) {
     console.log('===================================');
     console.log('Async function');
})

Пример того, что я реализую(только проще). Подскажите, что я делаю не так ? Весь день на это убил.

P.S. Фнункция должна вызываться три раза при ошибке.


Ответы (1 шт):

Автор решения: murlock

Функция async.retry ожидает функцию с сигнатурной функцией (callback, result), где callback — это функция обратного вызова, которую следует вызывать после завершения операции, а result — это объект, содержащий результаты операции. Как я решил:

var async = require('async');

function callFunc(data, time,callback) {
     console.log(data, time)
     callback({message: "err"}, null); //error
     // callback(null, {message: "ok"});               // ok
}




async.retry({times: 3, interval: 1000}, function(callback, results) {
     callFunc("test", "data", callback)
}, 

function (err, results) {
     console.log('===================================');
     console.log('Async function');
})
→ Ссылка