我正在尝试递归获取目录中所有Java文件的列表。我正在尝试使用 Klaw,但我似乎无法让它与async/await
一起工作:
const files: string[] = [];
await klaw(myDir, {
filter: (item: any) => { return path.extname(item.path) === ".java"; }
}).on("data", (item) => { files.push(item.path); });
if (!files.length)
console.log("Directory contains no java files");
但是,在过滤器函数完成之前,我点击了底部 if 语句。我不知道如何纠正它。
假设您的代码在函数async
正常运行。您可以执行以下操作
// this code should be inside async function to use await keyword
const run = async () => {
const files: string[] = await new Promise<string[]>((resolve, reject) => {
const files: string[] = [];
klaw(myDir, {
filter: (item: any) => {
return path.extname(item.path) === ".java";
}
})
.on("data", item => {
files.push(item.path);
})
.on("end", () => resolve(files))
.on("error", reject);
});
if (!files.length) console.log("Directory contains no java files");
};
或者使用一些为您完成的软件包。例如,流到承诺
游乐场链接