Подтвердить что ты не робот

Как связать Promise.all с другими Promises?

Я хочу выполнить свой код в следующем порядке:

  • Обещание 1
  • Подождите, пока вы выполните 1, затем выполните Promise 2 + 3 в то же время
  • Конечная функция ожидает выполнения обещания 2 + 3.

У меня есть некоторые проблемы с этим, мой код до сих пор ниже.

function getPromise1() {
  return new Promise((resolve, reject) => {
    // do something async
    resolve('myResult');
  });
}

function getPromise2() {
  return new Promise((resolve, reject) => {
    // do something async
    resolve('myResult');
  });
}

function getPromise3() {
  return new Promise((resolve, reject) => {
    // do something async
    resolve('myResult');
  });
}

getPromise1()
.then(
  Promise.all([getPromise2(), getPromise3()])
  .then() // ???
)
.then(() => console.log('Finished!'));
4b9b3361

Ответ 1

Просто верните Promise.all(...

getPromise1().then(() => {
  return Promise.all([getPromise2(), getPromise3()]);
}).then((args) => console.log(args)); // result from 2 and 3

Ответ 2

Я знаю, что это старый поток, но не

() => {return Promise.all([getPromise2(), getPromise3()]);}

немного лишнее? Идея толстой стрелки состоит в том, что вы можете написать ее как:

() => Promise.all([getPromise2(), getPromise3()])

что делает полученный код более ясным:

getPromise1().then(() => Promise.all([getPromise2(), getPromise3()]))
.then((args) => console.log(args)); // result from 2 and 3

В любом случае, спасибо за ответ, я застрял в этом:)