我正在服务器端使用 post 方法来检索请求目录中的所有文件(非递归),下面是我的代码。
我有困难发送回响应(res.json(pathContent);)与更新pathContent不使用setTimeout。
我知道这是由于所使用的文件系统方法(readdir和stat)的异步行为,需要使用某种回调、异步或承诺技术。
我尝试将async.waterfall的整个主体readdir用作一个函数,将 用作另一个函数res.json(pathContent),但它没有将更新后的数组发送到客户端。
我知道关于这个异步操作有成千上万的问题,但在阅读了大量帖子后无法弄清楚如何解决我的问题。
任何意见将不胜感激。谢谢。
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');
const path = require('path');
var pathName = '';
const pathContent = [];
app.post('/api/files', (req, res) => {
const newPath = req.body.path;
fs.readdir(newPath, (err, files) => {
if (err) {
res.status(422).json({ message: `${err}` });
return;
}
// set the pathName and empty pathContent
pathName …Run Code Online (Sandbox Code Playgroud)