我正在使用地图来添加迭代文本文件的值。 在循环中读取txt文件,映射不为空。 但是在循环之外,地图返回的是空白。
function processTxt(inputFile) {
var instream = fs.createReadStream(inputFile),
outstream = new (require('stream'))(),
rl = readline.createInterface(instream, outstream);
var myMap = new Map();
rl.on('line', function (line) {
var array = line.split(" ");
if(line.startsWith("/")) {
myMap.set(array[1], array[3];
}
//If I print the map here the map is not empty
myMap.forEach((value, key) => {
console.log(`${key} = ${value}`);
}, myMap);
});
//The map outside the function here is returning empty.
myMap.forEach((value, key) => {
console.log(`${key} = ${value}`);
}, myMap);
return myMap;
}
答案 0 :(得分:0)
您正在加载map
之前将其打印出来。 rl.on
是async
函数,因此它立即继续到下一行(myMap.forEach...
)。
答案 1 :(得分:0)
readline.on
是一个异步函数,用于设置事件侦听器。程序的流程是如此,readline.on()
函数调用被放入事件循环,并且随后的所有代码都首先发生。
观看以下精彩视频,了解事件循环:https://www.youtube.com/watch?v=8aGhZQkoFbQ