Продолжайте цикл promise.all, если в сценарии с лямбда-узлом обнаружена ошибка - PullRequest
0 голосов
/ 02 января 2019

У меня есть простой скрипт узла, запускаемый в лямбда-функции AWS.Каждое обещание - это вызов AWS SDK, который может дать сбой, но по большей части я хочу игнорировать сбои и продолжить.

Когда я улавливаю ошибку и просто игнорирую ее следующим образом, я получаю UnhandledPromiseRejectionWarning ошибку

Promise.all(promises).then(() => {
        callback(null, 'completed');
    }).catch(err => {
        console.log('aws errors!', err);
    });

Каждое обещание в основном представляет собой putScheduledUpdateGroupAction вызов следующим образом

return new Promise((resolve, reject) => {
        aws.putScheduledUpdateGroupAction(params, function(err, data) {
            if (err) {
                reject(err);
            }
            else {
                resolve(data);
            }
        });
    });

Что должно произойти, чтобы проигнорировать ошибки AWS и продолжить без этой ошибки отклонения?Мне нужно, чтобы оно продолжалось в лямбда-ситуации, а не в отдельном узле.

1 Ответ

0 голосов
/ 02 января 2019

Обновление:

Чтобы игнорировать любое невыполненное обещание, использование Promise.all(promises).catch() должно перехватить все.

Исходный ответ:

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

return aws.putScheduledUpdateGroupAction(params).promise().catch((err) => {
    // Log the error but don't throw.
    console.log(err)
})
...