Как лямбда-функция выполняет фоновые таймеры? - PullRequest
0 голосов
/ 31 мая 2019

Когда setTimeout упакован в Promise, код выполняется в aws lamda, но обычная функция setTimeout не выполняется. Как обрабатывается цикл событий Nodejs в среде выполнения aws lamda?

exports.handler = async (event) => {
    setTimeout(function() {
           // This part not executed
    }, 1*1000);

    return new Promise((resolve)=>{
        setTimeout(function() {
            // This part executed
            resolve('works');
        }, 3*1000);
    });
}

1 Ответ

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

Таймер запускается нормально, но выполнение лямбды завершается до его разрешения - все, что не упаковано в возвращенное обещание, игнорируется.

Во втором случае возвращается Обещание, и поскольку вся функция-обработчик объявляется как async, которая всегда упаковывает свой результат в Обещание, возвращаемый результат Обещания выравнивается и возвращается правильно.

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