Когда вы catch
обещаете, полученное обещание преобразует в значение, возвращаемое .catch
. Таким образом, здесь, если есть ошибка, выражение, которое [foo, bar]
будет пытаться деструктурировать, будет тем, что возвращает next(err)
, а это не то, что вам нужно.
Вы можете перехватить ошибки снаружи звонка Promise.all
:
try {
const [foo, bar] = await Promise.all<Object, Object>([
fooPromise(),
barPromise()
]);
// use foo and bar
} catch(err) {
next(err);
}
Или без await
:
Promise.all<Object, Object>([
fooPromise(),
barPromise()
])
.then(([foo, bar]) => {
// use foo and bar
})
.catch(err => next(err));