如何在等待状态下运行Array.map?
const CLASS_PATH = 'User/matt/Github/project';
const PACKAGE_JSON = 'package.json';
const walk = async path => {
let dirs = [];
for (const file of await readdir(path)) {
if ((await stat(join(path, file))).isDirectory()) {
dirs = [
...dirs,
file,
];
}
}
return dirs;
};
async function main() {
const packagePaths = await walk(CLASS_PATH)
.map(pkgName => join(CLASS_PATH, pkgName, PACKAGE_JSON));
}
main();
答案 0 :(得分:0)
始终可以使用方括号来更改操作员的先决条件:
(await walk(CLASS_PATH)).map(/*...*/)
答案 1 :(得分:0)
您也可以使用Promise。 因此,在您的情况下:
const packagePaths = await Promise.all(walk(CLASS_PATH).map(async (item): Promise<number> => {
await join(CLASS_PATH, pkgName, PACKAGE_JSON);
}));
Promise.all(iterable)方法返回一个在以下情况下解析的承诺 可迭代参数中的所有承诺都已解决或被拒绝 第一个通过的承诺被拒绝的原因。