nodejs функция стрелки не возвращает ожидаемое значение - PullRequest
0 голосов
/ 22 февраля 2020

Я использую aws -sdk для загрузки сообщения в kinesis. Это работает нормально, но я пытаюсь решить, когда действие не работает (из-за того, что inte rnet не работает или что-то в этом роде).

Вот код, который я запускаю.

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

  console.log(returnValue);

Я ожидаю получить ошибку или данные. Вместо этого я получаю огромное json от того, что я предполагаю, является сам запрос kinesis.PutRecord.

Есть идеи, почему я не возвращаю данные в мою переменную returValue?

Консоль прекрасно регистрирует данные и ошибки.

ОБНОВЛЕНИЕ:

, как указано в комментариях, мне нужно было обернуть функцию в обещание. Я также поместил его в ловушку try, поскольку, если вы бросаете «reject» без перехвата, вы получаете необработанное отклонение обещания.

Обновленный код здесь:

  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;
  }
...