javascript闭包和返回数组元素
我正在尝试学习使用node.js的javascript,显然不太了解闭包。 我试图逐行读取一个文件,解析该行,将结果放入数组并返回数组。以下是我所拥有的(不太管用): 我肯定这与闭包有关,只是不太明白。任何帮助都将不胜感激javascript闭包和返回数组元素,javascript,Javascript,我正在尝试学习使用node.js的javascript,显然不太了解闭包。 我试图逐行读取一个文件,解析该行,将结果放入数组并返回数组。以下是我所拥有的(不太管用): 我肯定这与闭包有关,只是不太明白。任何帮助都将不胜感激 谢谢 这是一个懒惰列表。它是异步行为的包装器。您试图在列表填写之前检查它,因此它当然不起作用 问题与闭包无关。这都是关于异步行为的 我在惰性列表代码中没有看到任何允许一般“完成时”回调的内容。请详细说明“不太有效”。代码本身似乎正确……您是否检查了执行console.log(
谢谢 这是一个懒惰列表。它是异步行为的包装器。您试图在列表填写之前检查它,因此它当然不起作用 问题与闭包无关。这都是关于异步行为的
我在惰性列表代码中没有看到任何允许一般“完成时”回调的内容。请详细说明“不太有效”。代码本身似乎正确……您是否检查了执行
console.log(line)
映射是否应该执行?@Deestan这是OP的代码,但不是问题文本:“console.log(myArray)”;//空的
”。OP希望myArray
为空时它是非空的。关于数组部分,我看差不多是对的。但是line参数不是已经是字符串了吗?创建部件时部件是否包含数组?@代码“正确”,因为没有语法错误,但其编写方式假定文件I/O的异步完成将同步进行。
var fs = require('fs'), Lazy = require('lazy');
function parseMyFile (filename) {
var myArray= [];
var lazy = new Lazy (fs.createReadStream(filename));
lazy
.lines
.map(function(line){
var parts = line.toString().split('|');
var item = {
bucket: parts[1],
uri: parts[2].substring(2),
token: parts[0],
fileDate: parts[3]
};
myArray.push (item);
});
console.log(myArray); // empty
return myArray;
};
var myItems = parseMyFile ('Tokens.csv');