小编she*_*rue的帖子

Node.js 如何等待异步调用(readdir 和 stat)

我正在服务器端使用 post 方法来检索请求目录中的所有文件(非递归),下面是我的代码。

我有困难发送回响应(res.json(pathContent);)与更新pathContent不使用setTimeout

我知道这是由于所使用的文件系统方法(readdirstat)的异步行为,需要使用某种回调、异步或承诺技术。

我尝试将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)

javascript asynchronous node.js express

2
推荐指数
1
解决办法
4415
查看次数

标签 统计

asynchronous ×1

express ×1

javascript ×1

node.js ×1