我进行异步调用来获取一些数据。然后,我需要进行 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
中完成的。
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"]