ime*_*tuk 2 javascript node.js
我是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);
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
如果用户按1,则假定执行listFile方法并显示其中的所有文件。
我的问题是,为什么不执行fs.readdirSync?如果我使用readdir()执行该程序,则该程序有效,但会将输出弄乱给用户。
您正在向传递回调,fs.readdirSync()但是*Sync()函数通常不接受回调。在这种情况下,永远不会运行该回调,因为该函数不会接受回调,因此您看不到任何输出。但fs.readdirSync()实际上执行。
fs.readdirSync() 只需返回它的值(这可能会使程序更易于阅读,但也意味着调用将被阻塞,根据程序的用途和使用方式,这可能是可以的。)
var resultsArray = fs.readdirSync(datafolder);
Run Code Online (Sandbox Code Playgroud)
(您可能希望将其包装在中以try/catch进行错误处理。)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |