【发布时间】:2016-09-18 12:55:00
【问题描述】:
我有以下代码,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);
})();
【问题讨论】:
-
您的代码非常不完整。您能否提供一个可以实际运行的示例(包括
stat的定义)?除此之外,如果fileStatsPromises是一个 Promises 数组,那么您应该可以选择第二个选项 (bar)。 -
这似乎是由打字稿引起的错误,因为当我登录
bar时控制台实际上输出了10 'hello'。
标签: javascript typescript async-await ecmascript-next