首页 > 解决方案 > 为什么这段代码会产生一个空字典,我该如何修复它?

问题描述

我正在尝试读取文件并拆分多个字符。如果我将日志语句放在 rl.on 块中,我会得到一些输出,但由于某种原因,当块完成时字典再次为空。

let rl = readline.createInterface({
        input: fs.createReadStream('Spanish.txt'),
    })
    

   let dict={};
   let arr1=[];
   let arr2=[];
   rl.on(`line`, (line)=>{
       if (!line.startsWith('#')){
           arr1=line.split('\t');
           if (arr1[1]!=undefined) {
               arr2 = arr1[1].split('[').join(',').split('/').
               join(',').split('(').join(',').split(',');
               dict[arr1[0]]=arr2[0];
           }
       }
    });
    console.log(dict);

标签: javascriptnode.js

解决方案


这些行是异步读取的,因此在您记录时dict,处理尚未完成。

您可以监听close事件以确定文件是否已被完全读取:

rl.on('close', () => console.log(dict));

更好的是,使用Node.js 文档中详述的基于async/的方法。await


推荐阅读