Как я могу получить возврат от функции asyn c, такой как ax ios .get, в функции NodeJS Lambda? - PullRequest
0 голосов
/ 07 августа 2020

Я использую AWS Amplify для создания некоторого бэкенда в AWS, и у меня есть функция Lambda, которая запускается при обновлении DynamoDB. Ему не нужно ничего возвращать.

Я продолжаю получать ошибки в CloudWatch, говоря: «SyntaxError: await допустимо только в функции asyn c». Есть ли другой способ запустить эти асинхронные c функции в обработчике?

exports.handler = async (event) => {
  console.log(JSON.stringify(event, null, 2));
  event.Records.forEach(record => {
    console.log(record.eventID);
    console.log(record.eventName);
    console.log('DynamoDB Record: %j', record.dynamodb);

    if (record.eventName == "INSERT") {
      try {
        res = await axios.get("https://google.com", {});
        console.log(res);
      }
      catch(e){
        console.log(e);
      }
    }
  });
};

1 Ответ

0 голосов
/ 07 августа 2020

вы выполняете ожидание внутри forEach l oop, которое является его собственным состоянием функции. Вы можете попробовать встроенную функцию asyn c await внутри оператора if

(async function process() {
    try {
        res = await axios.get("https://google.com", {});
        console.log(res);
    }
    catch(e){
        console.log(e);
    }
}())
...