如何等待多个承诺?
How to await multiple Promises?
我有以下代码,fileStatsPromises
是Promise<Stats>[]
,foo
和bar
都是Promise<Stats>[]
。等待他们的正确方法是什么?我想得到 <Stats>[]
.
const files = await readDir(currentDir);
const fileStatsPromises = files.map(filename => path.join(currentDir, filename)).map(stat);
const foo = await fileStatsPromises;
const bar = await Promise.all(fileStatsPromises);
编辑:一个最小的例子。
function makePromise() {
return Promise.resolve("hello");
}
const promiseArray = [];
// const promiseArray = [] as Promise<string>[];
for (let i = 0; i < 10; i++) {
promiseArray.push(makePromise());
}
(async () => {
const foo = await promiseArray;
const bar = await Promise.all(promiseArray);
})();
这是正确的:
const bar = await Promise.all(promiseArray);
await Promise.all([...])
采用 Promise 数组和 returns 结果数组。
bar
将是一个数组:['hello', ..., 'hello']
你也可以解构结果数组:
const [bar1, ..., bar10] = await Promise.all(promiseArray);
console.log(bar1); // hello
console.log(bar7); // hello
请使用Promise.all()
。
请参考官方文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
我有以下代码,fileStatsPromises
是Promise<Stats>[]
,foo
和bar
都是Promise<Stats>[]
。等待他们的正确方法是什么?我想得到 <Stats>[]
.
const files = await readDir(currentDir);
const fileStatsPromises = files.map(filename => path.join(currentDir, filename)).map(stat);
const foo = await fileStatsPromises;
const bar = await Promise.all(fileStatsPromises);
编辑:一个最小的例子。
function makePromise() {
return Promise.resolve("hello");
}
const promiseArray = [];
// const promiseArray = [] as Promise<string>[];
for (let i = 0; i < 10; i++) {
promiseArray.push(makePromise());
}
(async () => {
const foo = await promiseArray;
const bar = await Promise.all(promiseArray);
})();
这是正确的:
const bar = await Promise.all(promiseArray);
await Promise.all([...])
采用 Promise 数组和 returns 结果数组。
bar
将是一个数组:['hello', ..., 'hello']
你也可以解构结果数组:
const [bar1, ..., bar10] = await Promise.all(promiseArray);
console.log(bar1); // hello
console.log(bar7); // hello
请使用Promise.all()
。
请参考官方文档https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all