gpt4 book ai didi

javascript - NodeJS readdirSync() 未执行

转载 作者:搜寻专家 更新时间:2023-11-01 00:21:23 28 4
gpt4 key购买 nike

我是非阻塞环境的初学者,例如 NodeJS。下面是我的简单代码,它列出了目录中的所有文件:

var readline = require('readline');
var rl = readline.createInterface(process.stdin, process.stdout);
var fs = require('fs');

var datafolder = './datafolder';
var datafoldername = 'datafolder';

rl.setPrompt('Option> ');
rl.prompt();
rl.on('line', function(line) {
if (line === "right") rl.close();

if (line == '1') {
listFile();
}

rl.prompt();
}).on('close', function() {
process.exit(0);
});

function listFile() {
console.log(`File(s) on ${datafolder}`);
fs.readdirSync(datafolder, (err, files) => {
if (err) {
console.log(err);
} else {
files.forEach(filename => {
console.log(filename);
});
}
});
}

如果用户按 1,则假设执行方法 listFile 并显示其中的所有文件。
我的问题是,为什么 fs.readdirSync 没有执行?如果我使用 readdir() 执行此程序,该程序会工作,但它会弄乱向用户的输出。

最佳答案

您正在向 fs.readdirSync() 传递回调,但 *Sync() 函数不接受回调。回调永远不会运行(因为该函数不接受回调),所以您看不到任何输出。但是 fs.readdirSync() 实际上会执行。

fs.readdirSync() 只是返回它的值(这可能使程序更易于阅读,但也意味着调用将被阻止,这可能没问题,具体取决于您的程序做什么以及它如何执行被使用。)

var resultsArray = fs.readdirSync(datafolder);

(您可能希望将其包装在 try/catch 中以进行错误处理。)

关于javascript - NodeJS readdirSync() 未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43244534/

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