Получение ответа от лямбда через обратный вызов и позволить лямбда продолжить работу - PullRequest
1 голос
/ 28 марта 2019

Допустим, у меня есть эта лямбда-функция:

exports.handler = (event, context, callback) => {
  lambda.invoke({
    FunctionName: 'longCheckout',
    InvocationType: 'Event',
    Payload: JSON.stringify(event, null, 2) // pass params
  }, function(error, data) {

    console.log(error, data)
    callback(null, data);
  });
};

, и я хочу вызвать лямбду longCheckout, которая выполнит некоторую работу и отправит ответ на лямбду, вызывающую вызов, а затем продолжит выполнение более длинного запроса.Таким образом, лямбда-функция, которую я вызываю, имеет аргумент обратного вызова, но когда я вызываю функцию, переданную в функции, в вызывающей лямбде ничего не происходит.Вот как выглядит лямбда, которую я называю

exports.handler = (event, test, callback) => {
  docClient.update(params, function(err, data) {
    callback(....)
    // continue to execute 
  })
}

1 Ответ

1 голос
/ 28 марта 2019

Лямбда может вызываться синхронно (используемое вами поведение по умолчанию) или асинхронно.Если вы решите вызывать асинхронно, обе лямбды продолжат работать одновременно, но вы не сможете получить никакого возвращаемого значения.

Возможное решение сделать то, что вы просите:

  1. Lambda 1 вызывает синхронно Lambda 2
  2. Lambda 2 вызывает docClient.update и асинхронно вызывает Lambda 3 (затем возвращает).
  3. Lambda 3 выполняет остальное необходимое выполнение.

Читать это об асинхронных вызовах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...