如何在下一个“then”之前等待多个异步调用在“then”中完成? [重复]

问题描述 投票:0回答:1

我进行异步调用来获取一些数据。然后,我需要进行 3 个异步调用。这 3 个电话结束后,我想做点别的事情。我试过这个:

let outerApi;

getApi(url).then(function(api) {
  outerApi= api;
  return doSomething(api, "cars");
}).then((cars) => {
   //3 async calls
   call1(outerApi, cars);                 
   call2(outerApi, cars);             
   call3(outerApi, cars);
}).then(call1ReturnValue, call2ReturnValue, call3ReturnValue => {
   doSomething(call1ReturnValue, call2ReturnValue, call3ReturnValue);
});

传递给 doSomething 的值都是未定义的。如何等待 3 个异步调用完成?我知道如何通过

Promise.all
将其作为链的第一步,但不确定这是如何在
then
中完成的。

javascript asynchronous promise
1个回答
-1
投票

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, 'foo');
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
// Expected output: Array [3, 42, "foo"]

© www.soinside.com 2019 - 2024. All rights reserved.