В ответ на мой комментарий с использованием await Promise.all([first(), second()]);
:
Метод promise.All()
возвращает одно обещание, которое окончательно разрешается, когда все обещания проходят как итеративные или когда итерируемые не содержат никаких обещаний.Он отклонит причину отклонения первого обещания.
Пример
async function one() {
return new Promise(resolve => {
resolve('One')
})
}
async function two() {
return new Promise(resolve => {
resolve('Two')
})
}
async function run() {
return await Promise.all([one(), two()]); // One await
}
run().then((response) => {
// Access Individually
console.log(response[0]); // One
console.log(response[1]); // Two
// Access Together
console.log(response);
})
И ответить на ваш недавний комментарий.Передать значение из одного обещания другому, если вторая функция зависит от этого параметра.Мы могли бы сделать что-то вроде этого.
Пример 2
async function first() {
return new Promise(resolve => {
resolve('First') // Resolve 'first'
})
}
async function second(response) {
return new Promise(resolve => {
resolve(response); // first() ran, then we appended '& second', then resolve our second response
})
}
async function run() {
// Wait for first() response, then call second() with response + append 'second'
return await first().then((response) => second(response + ' & second'))
}
run().then((response) => {
// Output: first & second
console.log(response)
})
Документация: обещание. Все () - MDN