如何在“逐行”npm 中遍历所有行
How to iterate through all lines in "line-by-line" npm?
作为一种临时方法,我使用.txt文件来存储程序的某些变量。写作与fs.appendFile
完美配合,但考虑到它的大小,用fs.readFile
阅读是不合适的 - 我想从文件中获取某一行,npm 逐行告诉我可能会有所帮助。
不过,我对此有点迷茫。这是我调用的函数:
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
总是表明变量尚未更改。
我该怎么做?
您可以使用核心节点 API 提供的Readline
模块。
逐行的读取行 API 示例
const readline = require('readline'); const fs = require('fs'); const rl = readline.createInterface({ input: fs.createReadStream('sample.txt') }); rl.on('line', (line) => { console.log('Line from file:', line); });
上面的示例取自 Node Readline API 文档
变量
没有更改,因为videoid
是按值传入的。这意味着函数中对它的任何更改都不会反映在变量本身上。
例如:
function increment(num) {
num++;
}
var a = 1;
increment(a);
console.log(a); // 1
若要传入将由函数更改的变量,需要传入对象类型。
例如:
function increment(num) {
num.val++;
}
var a = {val: 1};
increment(a);
console.log(a); // Object {val: 2}
要将其应用于您的程序,您需要创建一个对象来保存videoid
并在完成阅读后关闭流:
var videodata = {videoid: 'someID'};
function YTAPP_LBL_SetValueToLine(path, lineid, viddata){
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){
viddata.videoid = line;
// Close the stream
lr.close();
}
});
};
相关文章:
- 循环遍历以数组为值的Javascript对象
- 遍历类元素数组,并在jquery中选择同级元素
- Jquery遍历表元素
- Chrome扩展:遍历不同的页面并收集数据
- 如何遍历包含对象的数组-javascript
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 遍历AngularJs中的对象
- JQuery 遍历当前 SELECT 值
- 循环遍历包含另一个表单的表单
- 使用Yadda和Protractor重用步骤定义,遍历所需文件
- 遍历D3中所有数据点之间的所有值
- 自动遍历所有链接的事件
- JS.循环遍历多维数组,以计数元素在每列中的出现次数
- 如何使用 document.querySelectorAll 遍历选定的元素
- 使用Javascript反向遍历XML
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- Netsuite Suitelet:在不达到治理限制的情况下,遍历事务行项目的列表加载和提交记录
- 遍历DOM查找字符串有时会正确返回
- 如何使用SnapSVG将SVG作为树结构遍历
- 如何在“逐行”npm 中遍历所有行