我在module.exports内部创建了多个函数,我试图调用一个函数的异步重试,该函数试图向API发送POST请求并等待响应。 它将重试3次,超时200秒。
但是每次我运行它时,第一次迭代就会执行,它能够调用函数sendEnergy并初始化一个POST请求。 但是当它重试它的抛出错误时失败
错误:Async.Retry的参数无效
这是我的密码-
module.exports = {
sendMessageToNewModel: (body, id) => {
url = '';
switch (id) {
case 'energy':
url = 'http://myapi.test.api/appliance'; //for appliance energy
break;
case 'device-energy':
url = 'http://myapi.test.api/device'; //for device energy
break;
}
async.retry({ times: 3, interval: 200 }, module.exports.sendEnergy(url, body), function (err, result) {
console.log(result)
});
},
sendEnergy: (url, body) => {
const options = {
url: url,
json: true,
body: body
};
request.post(options, (err, res, body) => {
if (!err) {
return res.statusCode;
}
});
}
}
检查这一行
async.retry({ times: 3, interval: 200 }, module.exports.sendEnergy(url, body), function (err, result) {
console.log(result)
});"
module.exports.sendEnergy(url,body)=调用sendEnergy(url,body)
不返回任何信息
根据文档,它必须是一个函数。
在不改变结构的情况下,我现在可以想出一个办法。
let sendEnergyRetry = sendEnergy.bind(null,url,body);
async.retry({ times: 3, interval: 200 }, sendEnergyRetry , function (err, result) {
console.log(result)
});"