gpt4 book ai didi

javascript - Nodejs readline 回调

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:00 24 4
gpt4 key购买 nike

我正在研究回调,由于某种原因我无法正确理解......我想读取一个文件,并将其数据保存到全局变量中以供稍后使用。

这是我到目前为止所拥有的:

var fs = require("fs");
var readline = require("readline");
var i = 0;
var total = 66; //put the total foldernames or total images (same number)
var folder_names = [];
var data = [];

lineReader = readline.createInterface({
input: fs.createReadStream("folder-names and data.txt")
});


lineReader.on('line', function(line, dataCollector) {
if(i<66)
folder_names.push(line);
else
data.push(line);

dataCollector(folder_names, data);
i++;
});

var dataCollector = function(folder_names, data) {
//console.log(folder_names);
}

console.log(folder_names[0]); //should have a value now.

出了什么问题?我得到:dataCollector 不是一个函数

最佳答案

您在此处隐藏 dataCollector 标识符:

lineReader.on('line', function(line, dataCollector) {

这将 dataCollector 声明为回调的第二个参数,隐藏(隐藏)脚本顶层的标识符。

The line event没有记录它为其回调提供第二个参数,因此它应该如下所示:

lineReader.on('line', function(line) {
<小时/>

关于问题的扩展:

console.log(folder_names[0]); //should have a value now.

不,不应该。为什么:How do I return the response from an asynchronous call?

就您而言,您可能希望在 close 事件处理程序中执行 console.log 操作:

lineReader
.on('line', function(line) {
if(i<66)
folder_names.push(line);
else
data.push(line);

dataCollector(folder_names, data);
i++;
})
.on('close', function() {
console.log(folder_names[0]); // has its values now
});

关于javascript - Nodejs readline 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39790624/

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