如果您有一个看起来像这样的功能:
async function foo() {
const myString = 'some string';
const myInt = 5;
const promise1 = fetchData(); // An async function returning a promise
const promise2 = fetchSomeOtherData(); // An async function returning a promise
return {
myString,
myInt,
promise1,
promise2,
}
}
对我来说,fetchData()
和fetchSomeOtherData()
同时执行(这意味着对这两者同时添加waiting将不是有效的解决方案)对我来说很重要,这是使调用函数时,promise就会解决。
我在考虑Promise.all()
的含义,只是针对其中包含一些promise而不是数组的对象。
对我来说,同样重要的是,我的对象应保持其原样。
我知道Promise.all()
有一些变通方法,您可以将对象转换为数组,然后再进行重构,但这并没有我想要的那么干净。
我要使用该函数并兑现承诺的方式如下:
const object = await foo();
它应该解决两个诺言
答案 0 :(得分:1)
async function foo() {
const myString = 'some string';
const myInt = 5;
const promise1 = fetchData();
const promise2 = fetchSomeOtherData();
return {
myString,
myInt,
promise1: await promise1,
promise2: await promise2,
}
}
诺言不需要await
或.then()
即可开始执行。一旦创建它,它便开始运行,并且await
/ .then()
只是检索执行结果而不是触发执行的两种方法。因此,当您运行fetchData()
和fetchSomeOtherData()
时,它们都会立即开始执行,并且第二个调用不会等待第一个调用。