Nodejs中electron IpcMain & IpcRenderer通信

1.事情起因:

原因是本人在使用nedb数据库进行数据插入的时候,发现莫名其妙多出了很多很多的数据,很容易想到,那么就是插入语句被调用了N多次,并且每一次插入的数据都是之前已经插入过的数据,比如说第一次插入的是{id:1,name:xx},第二次就是插入【{id:1,name:xx},{id:2,name:xx}】,以此类推… 会出现很多很多重复并且反复插入的数据,那这是什么原因导致的呢?又应该如何处理呢?

2.业务场景

我们需要一个收发器,那么 可以通过ipcRenderer.send(channel,data)方法进行发送数据,有发送器自然有接收器,也是通过ipcMain.on(channel , (ev,data)=>{})。最近有个静默下载需求,在用户毫无感知的情况下完成下载解压,并且打开文件的操作,在下载完成之后,将信息存入nedb数据库中,废话不多说,看图说话。

3.详情描述

ps:打码部分是无关部分,为了区分重点!
1.ipcRenderer发送信息到通道中
在这里插入图片描述
2.在main.js中ipcMain进行监听。
在这里插入图片描述
3.在每一次进来的时候都给了一个打印值。
在这里插入图片描述
4.调用electron静默下载。
在这里插入图片描述
5.在下载状态中,有update状态,表示下载的进度情况,通常用作做进度条,updateProgressing就是用作更新进度条信息。
在这里插入图片描述
6.下载完成有 一个监听函数,item.on(‘done’, (e, state) => {}),对done事件进行监听debug调试
在这里插入图片描述
因为点了第二个应用下载了,所以done事件进行了两次
在这里插入图片描述
当然。点击次数越多进行越多
在这里插入图片描述

7.造成的原因是什么咧?很简单,debug看看item对象就明白了
在这里插入图片描述
很明显,有两个事件:update 和done 事件 ,次数越来越多的原因是因为item对象没有被清空,那如何解决这个问题呢?
有一个比较简单的处理方法,就是直接return false;
在这里插入图片描述
在监听逻辑操作完成之后,将flag标志成true;在下一次执行的时候直接截断;不再进行反复循环操作。
结果如下:

在这里插入图片描述
下载恢复了正常。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值