javascript - 为什么这段代码会产生一个空字典,我该如何修复它?
问题描述
我正在尝试读取文件并拆分多个字符。如果我将日志语句放在 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);
解决方案
这些行是异步读取的,因此在您记录时dict
,处理尚未完成。
您可以监听close
事件以确定文件是否已被完全读取:
rl.on('close', () => console.log(dict));
更好的是,使用Node.js 文档中详述的基于async
/的方法。await
推荐阅读
- php - Laravel - 将值从一列移动到另一列
- r - 从年(双)和周数(字符)构造年周
- azure-devops - Azure Devops 工作项
- android - RecyclerView 未在布局中显示
- node.js - 使用 Fluentd 在 Elasticsearch 中创建映射
- wireshark - 不同DDS厂商的发现机制
- sparql - 查询 SPARQL 结果级别 1 层次结构
- android - 在 Kotlin 中启动动画
- javascript - 从 forwardRef 中提取 ref(createRef 与 useRef 相比)| 反应原生
- android - 设备锁定时无法启动通话活动