11

node.js モジュール async を勉強していますが、関数 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

では、どうすれば関数を正しく使用できますか?

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 に答える