11

我正在研究 node.js 模块 async,但是函数 async.retry 有一些问题。

根据其github 文档,该函数将继续尝试该任务,直到它成功或机会用完。但是我的任务如何判断成功或失败?

我尝试了下面的代码:

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

那么如何正确使用该功能呢?

4

1 回答 1

5

你希望你的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);
});
于 2015-03-11T03:17:28.713 回答