javascript - 如何使递归函数等待直到它完成 - nodejs
问题描述
我已经建立了这个端点:
app.get("/files", async (req, res) => {
const getFilesFromLoc = async loc => {
let filesString = "";
await fs.readdir(loc, async (err, files) => {
if (err) {
console.error("Could not list the directory.", err);
process.exit(1);
}
return await files.forEach(async file => {
const newPath = path.join(loc, file);
return await fs.stat(newPath, async (err, stat) => {
if (err) {
console.error("Error stating file.", err);
return;
}
if (stat.isFile()) {
const extension = path.extname(newPath);
if (extension === ".js" || extension === ".jsx") {
return await fs.readFile(newPath, "utf8", (err, string) => {
if (err) {
console.error("Error reading file.", err);
return;
}
return filesString += string;
});
}
} else if (stat.isDirectory()) {
return await getFilesFromLoc(newPath);
}
})
})
})
return filesString;
}
const filesString = await getFilesFromLoc("src/client/actions");
res.send(filesString);
});
它所做的是从一个起始路径开始,它收集每个 js 和 jsx 文件,将其转换为字符串,并将其推送给fileString
.
但是,该功能运行良好。响应是一个空字符串。我在哪里做错了?
解决方案
推荐阅读
- regex - 如何以任何顺序正则表达式匹配逗号分隔值?
- reactjs - 反应 | 构建文件显示空白
- react-native - React Native 中的自定义曲线
- asp.net - 无法使用 .NET Core 3.1 文件系统发布到 IIS 连接到数据库
- java - 动态列表中的每个字符组合
- android - 如何在 Flutter 的卡片视图中显示垂直项目
- json - 使用 Powershell 读取 JSON 层次结构(子节点数可以是任意数字)文件
- postgresql - 如何在一次查询中以 posgresql JSONB 数据类型获取多个表数据
- android - 为什么 Android 湿度传感器不起作用?
- android - 集成 UPI 支付网关时,支付应用程序未显示在我的三星和 Vivo 设备中