我如何等待JavaScript/TypeScript中的承诺列表?

我如何等待JavaScript/TypeScript中的承诺列表?,javascript,typescript,async-await,ecmascript-next,Javascript,Typescript,Async Await,Ecmascript Next,我有以下代码,fileStatsPromises属于Promise[],foo和bar都属于Promise[]。等待他们的正确方式是什么?我想得到[] const files = await readDir(currentDir); const fileStatsPromises = files.map(filename => path.join(currentDir, filename)).map(stat); const foo = await fileSta

我有以下代码,
fileStatsPromises
属于
Promise[]
foo
bar
都属于
Promise[]
。等待他们的正确方式是什么?我想得到
[]

    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);
})();
函数makePromise(){
回复承诺。解决(“你好”);
}
常量promiseArray=[];
//常量promiseArray=[]作为承诺[];
for(设i=0;i<10;i++){
promiseArray.push(makePromise());
}
(异步()=>{
const foo=等待承诺数组;
const bar=等待允诺.all(允诺数组);
})();
这是正确的:

const bar = await Promise.all(promiseArray);
等待承诺。all([…])
接受承诺数组并返回结果数组

bar
将是一个数组:
['hello',…,'hello']

您还可以解构生成的数组:

const [bar1, ..., bar10] = await Promise.all(promiseArray);
console.log(bar1); // hello
console.log(bar7); // hello

请使用
Promise.all()

请参阅官方文档

您的代码非常不完整。您能否提供一个实际可以运行的示例(包括
stat
的定义)?除此之外,如果
fileStatsPromises
是一系列承诺,您应该可以选择第二个选项(
bar
)。这似乎是由typescript引起的错误,因为当我记录
bar
时,控制台实际上输出10个“hello”。不确定为什么会对其进行升级-使用“wait”导致这甚至不是有效的js语法…@Everyone\u其他问题也要求使用TypeScript。此外,这是有效的JS(ES2017),适用于Node.JS 7和8的最新版本。如果需要旧版本的JS,可以通过Babel之类的工具运行源代码。