Javascript 使用node.js函数async.retry确定成功/失败
我正在研究node.js模块async,但函数async.retry有一些问题 根据它的, 函数将继续尝试该任务,直到任务成功或机会用尽。但我的任务如何判断成功或失败呢 我尝试了下面的代码:Javascript 使用node.js函数async.retry确定成功/失败,javascript,node.js,asynchronous,node-async,Javascript,Node.js,Asynchronous,Node Async,我正在研究node.js模块async,但函数async.retry有一些问题 根据它的, 函数将继续尝试该任务,直到任务成功或机会用尽。但我的任务如何判断成功或失败呢 我尝试了下面的代码: var async = require('async'); var opts = { count : -3 }; async.retry(5, function (cb, results) { ++this.count; console.log(this.count, resul
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未定义
未定义未定义
那么,如何正确使用该函数呢?您希望您的
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);
});
我完全不明白的是,为什么文档中没有说明回调应该是您正在重试的函数的第一个参数。@阿里:嗯,实际上是:“
task(callback,results)
-一个接收两个参数的函数:(1)回调…”感谢您在异步任务中展示了bind
的用法。我只是想弄清楚如何传递参数。