使用node.js函数async.retry确定成功/失败

时间:2015-03-11 02:39:48

标签: javascript node.js asynchronous node-async

我正在研究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 个答案:

答案 0 :(得分:5)

您希望else - 分支失败。为此,您需要将一些内容传递给error参数;目前你只是通过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);
});