gpt4 book ai didi

javascript - fs.readdirSync 的奇怪行为

转载 作者:行者123 更新时间:2023-11-30 16:14:16 25 4
gpt4 key购买 nike

我使用 nodejs 5.5.0 和 pm2 1.0.1。我运行脚本:

npm start

在 package.json 中,它被定义为:

"scripts": {
"start": "pm2 start bin/www --watch"
},

我有一个返回视频列表的简单脚本,它有效:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
const fs = require('fs');
shows = fs.readdirSync(`public/videos`);
res.render('index', shows);
});

module.exports = router;

但我观察到一些有趣的事情......如果我进行以下修改,它不再有效,并返回一个空列表:

//shows = fs.readdirSync(`public/videos`);
res.render('index', fs.readdirSync(`public/videos`));

为了让它更有趣,以下工作:

shows = fs.readdirSync(`public/videos`);
res.render('index', fs.readdirSync(`public/videos`));

在我看来,如果存在某种延迟或缓存,fs.readdirSync 可以正常工作,但如果直接在同一行调用它则不行。

我是不是漏掉了一些简单的东西?

最佳答案

如果我错了,请大家指正。

但我相信这是因为 res.render 有第三个参数,你看不到哪个是 callback noted here

因此,当您在第一个示例中创建变量时,您会阻塞直到获得该变量,然后使用运行时可用的变量渲染模板。

但在您的第二个示例中,您传递了该选项,但是 res.render 的回调在 readdirSync 完成填充之前调用。

关于javascript - fs.readdirSync 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35762861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com