Определение успеха/неудачи с помощью функции node.js async.retry
Я изучаю асинхронный модуль node.js, но у меня есть некоторые проблемы с функцией async.retry.
В соответствии с github docs,
функция продолжит выполнение задачи до тех пор, пока она не преуспеет или шансы будут исчерпаны. Но как моя задача сказать успех или неудачу?
Я пробовал код ниже:
var async = require('async');
var opts = {
count : -3
};
async.retry(5, function (cb, results) {
++this.count;
console.log(this.count, results);
if (this.count > 0) cb(null, this.count);
else cb();
}.bind(opts), function (err, results) {
console.log(err, results);
});
Я ожидаю, что он будет работать до count === 1
, но он всегда печатает это:
-2 undefined
undefined undefined
Итак, как я могу правильно использовать функцию?
Ответы
Ответ 1
Вы хотите, чтобы ваш else
-branch потерпел неудачу. Для этого вам нужно передать что-то в параметр ошибки; в настоящее время вы просто проходите undefined
, который сигнализирует об успехе - и о том, что вы вернетесь.
async.retry(5, function (cb, results) {
++this.count;
console.log(this.count, results);
if (this.count > 0) cb(null, this.count);
else cb(new Error("count too low"));
}.bind(opts), function (err, results) {
console.log(err, results);
});