AWS Lambda: export.handler не работает функции обещания - PullRequest
0 голосов
/ 04 октября 2018

Это не работает:

exports.handler = (username, password) => {
    return {
        login: () => login(username, password),
        processLogin,
        generateReport
    };
};

Когда я перехожу на это, оно работает, но ...

exports.handler = (username, password) => {

    login(username, password);
    processLogin();
    generateReport();
};

... оно не следует порядку.Как заставить его работать на AWS Lambda?В моем понимании, процесс выглядит следующим образом: сначала запускается login, когда это делается, processLogin запускается, когда это делается, generateReport запускается.generateReport выглядит так:

function generateReport(token)...

, что означает, что функции получают некоторый аргумент из processLogin, который выполняется до этого.В любом случае, как мне заставить это работать?

Пожалуйста, дайте мне знать, если нужна дополнительная информация.

1 Ответ

0 голосов
/ 04 октября 2018

Ваша первая версия не возвращает Promise, но вместо этого возвращает объект.Код не выполняется.Кроме того, параметры обработчика должны соответствовать API AWS.

Ваш код должен явно возвращать обещание:

exports.handler = (event, context) => {
  username = extractUsername(event);
  password = extractPassword(event);

  return Promise.resolve()
           .then(() => login(username, password))
           .then(() => processLogin())
           .then(() => generateReport())
           .catch(err) => handleError());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...