Лямбда-функция: как решить проблему асинхронности - PullRequest
0 голосов
/ 31 мая 2018

Я использую функцию Lambda в AWS, и код написан на Nodejs. У меня проблема с Asynchronus.вот моя проблема:

  • У меня есть 4 записи о пользователях
  • Я хочу получить другие детали и вызвать другую лямбду для каждого пользователя
  • что я делаюя делаю цикл для каждого пользователя
  • , затем в цикле я пытаюсь вызвать другую лямбда-функцию.

Консигнатор, мой код:

(allProblems).forEach( function(eachProblem){
  console.log("User:"+eachProblem.userId)
  /*Lambda invoke */
  lambda.invoke({
    FunctionName: 'invitationHandler',
    Payload: JSON.stringify(params, null, 2) // pass params
    }, function(error, data) {
      /* Code For update data in another table */
     console.log("Data saved");
    }
  })

токовый выход:

User: 1
User: 2
Data saved
User: 3
Data saved
User: 4
Data saved

Ожидаемый вывод:

User: 1
Data saved
User: 2
Data saved
User: 3
Data saved
User: 4
Data saved

Пожалуйстапомогите мне решить эту проблему ... Спасибо

1 Ответ

0 голосов
/ 31 мая 2018

Вы можете использовать функциональность асинхронного / ожидающего узла для управления вашим асинхронным вызовом.

Проверьте документацию: https://blog.risingstack.com/mastering-async-await-in-nodejs/

  1. определите вашу функцию как 'асинхронную'.
  2. используйте await

Например, с вашим кодом, попробуйте что-то вроде:

try {
  (allProblems).forEach(function(eachProblem) {
    console.log("User:"+eachProblem.userId) 
    /*Lambda invoke */ 
    var data = await lambda.invoke({ FunctionName: 'invitationHandler', Payload: JSON.stringify(params, null, 2) // pass params }) console.log("Data saved")
  }
}
catch(e) {
  console.log(e)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...