有没有办法同步读取文本文件(在 JS 节点中)?
Is there a way to read a text file synchronously (in JS node)?
这是我的示例代码:
var dicWords = []
function ReadFile()
{
var fs = require('fs')
fs.readFile('words_alpha_sorted.txt', (err, data) =>{
if (err){
console.log(err);
return;
}
data = String(data)
dicWords = data.split(/\r?\n/);
})
}
function DoStuffWithFile();
{
//do stuff with the variable dicWords
}
function main()
{
ReadFile();
DoStuffWithFile();
}
我怎样才能读取文件,等待它完全读取,然后执行其余代码,以便在调用 DoStuffWithFile 时 dicWords 不是空数组?使用 JS(节点)。我想从主函数调用 DoStuffWithFile,而不是 ReadFile。注意-:主要功能实际上不是主要功能,但它是文件管理发生的地方。
您可以为此使用 readFileSync
function:
const data = fs.readFileSync('words_alpha_sorted.txt');
但是异步函数几乎总是更好的解决方案。同步方法停止 Javascript 执行一段未知的时间(与 JS 代码相比,它似乎是永恒的),而异步文件系统函数是 运行 并行的。
您可以利用 async/await-friendly Promise 方法来做:
var dicWords = []
async function ReadFile()
{
var fs = require('fs').promises
let data = await fs.readFile('words_alpha_sorted.txt')
data = String(data)
dicWords = data.split(/\r?\n/);
}
function DoStuffWithFile();
{
//do stuff with the variable dicWords
}
async function main()
{
await ReadFile();
DoStuffWithFile();
}
这是我的示例代码:
var dicWords = []
function ReadFile()
{
var fs = require('fs')
fs.readFile('words_alpha_sorted.txt', (err, data) =>{
if (err){
console.log(err);
return;
}
data = String(data)
dicWords = data.split(/\r?\n/);
})
}
function DoStuffWithFile();
{
//do stuff with the variable dicWords
}
function main()
{
ReadFile();
DoStuffWithFile();
}
我怎样才能读取文件,等待它完全读取,然后执行其余代码,以便在调用 DoStuffWithFile 时 dicWords 不是空数组?使用 JS(节点)。我想从主函数调用 DoStuffWithFile,而不是 ReadFile。注意-:主要功能实际上不是主要功能,但它是文件管理发生的地方。
您可以为此使用 readFileSync
function:
const data = fs.readFileSync('words_alpha_sorted.txt');
但是异步函数几乎总是更好的解决方案。同步方法停止 Javascript 执行一段未知的时间(与 JS 代码相比,它似乎是永恒的),而异步文件系统函数是 运行 并行的。
您可以利用 async/await-friendly Promise 方法来做:
var dicWords = []
async function ReadFile()
{
var fs = require('fs').promises
let data = await fs.readFile('words_alpha_sorted.txt')
data = String(data)
dicWords = data.split(/\r?\n/);
}
function DoStuffWithFile();
{
//do stuff with the variable dicWords
}
async function main()
{
await ReadFile();
DoStuffWithFile();
}