nodejs箭头函数未返回期望值

时间:2020-02-22 04:15:41

标签: node.js asynchronous aws-sdk

我正在使用aws-sdk将消息上传到kinesis。效果很好,但我正在尝试解决该操作不起作用的时间(由于互联网中断或其他原因)。

这是我正在运行的代码。

  const returnValue = kinesis.putRecord(params, (err, data) => {
    if (err) {
      logger.info(err);
      return err;
    } else {
      logger.info(data);
      return data;
    }
  });

  console.log(returnValue);

我希望找回错误或数据。相反,我得到的是我假设的kinesis.PutRecord请求本身的一个巨大的json。

关于为什么我没有将数据返回到我的returValue变量的任何想法?

控制台会记录数据和错误。

更新:

正如评论中指出的,

我需要将函数包装在promise中。我还把它放在了一个尝试陷阱中,因为如果您在没有抓住的情况下抛出“拒绝”,则会得到未处理的承诺拒绝。

此处更新了代码:

  try {
    const returnValue = await new Promise(function(resolve, reject){
      kinesis.putRecord(params, (err, data) => {
        if (err) {
          logger.info(err);
          reject(err);
        } else {
          logger.info(data);
          resolve(data);
        }
      });
    });
    logger.log(returnValue);
  } catch (error) {
    logger.error(error);
    return error;
  }

0 个答案:

没有答案