作为一种临时方法,我使用.txt文件来存储程序的某些变量。使用fs.appendFile
可以很好地进行写入,但考虑到它的大小,使用fs.readFile
阅读并不合适-我想从文件中获取某行,npm line-by-line被告知可能会有所帮助。
不过,我有点迷失了。这是我调用的一个函数:
function LBL_SetValueToLine(path, lineid, value){
var lr = new lblreader(path);
var m = 0;
lr.on('line', function (line) {
// 'line' contains the current line without the trailing newline character.
m=+1;
if(m==lineid){ value = line; };
});
};
调用本身就像一个普通的函数调用一样发生,所有的输入变量都是正确的。
我应该认为这不是一个正确的方法,但文档说,这是同步方法。但是,我可以看到.on的工作是asysnc,因为它需要函数输入。
不确定它是否与问题有关,但无论如何,函数调用后的console.log
总是指示变量没有被更改。
我该怎么做?
2条答案
按热度按时间njthzxwz1#
您可以使用Core Node API提供的
Readline
模块。逐行读取API示例
上面的示例摘自Node Readline API文档
gg0vcinb2#
变量没有改变,因为
videoid
是通过值传入的。这意味着在函数中对它的任何更改都不会反映在变量本身上。例如:
要传入一个会被函数改变的变量,你需要传入一个对象类型。
例如:
要将此应用于您的程序,您需要创建一个对象来保存
videoid
,并在完成阅读时关闭流: