提问者:小点点

从Module.Exports使用时,异步重试拒绝无效参数


我在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;
      }
    });
  }
} 

共1个答案

匿名用户

检查这一行

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)
        });"

相关问题