Вы можете сделать это несколькими способами.
Форма 1
Во-первых, потому что a
не возвращается, как указано @ chris-p-бекон, вместо обработки самого Обещания, вы можете вернуть его.
Вместо
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log("done", values);
});
использовать
return Promise.all([promise1, promise2, promise3]);
Форма 2
Другой способ - сделать функцию a
async function
, а затем ожидать Promise.all следующим образом:
async function a() {
...
await Promise.all([promise1, promise2, promise3]);
}
Во второй формечем первая форма, вы все равно можете обработать Обещание после того, как оно вернется:
async function a() {
...
var values = await Promise.all([promise1, promise2, promise3]);
console.log("done", values);
}
Заключение
Обе формы отвечают на ваш запрос change ваш кусок кода, и он будет почти эквивалентен вашему коду. Но обратите внимание, что если бы вы использовали функцию catch
, вам пришлось бы вместо этого использовать try-catch вокруг await
.