深度保持探索全栈开发的无限可能
记录技术成长的每一步

Electron electronAPI.receive每执行一次,监听多一次,怎么解决?

场景回顾

Electron使用预加载preload.js的方式,进行主进程和渲染进程进行通讯。

- --

- -
	--------------
	-----------
- - -----

------------------ -
	-- --- -- - -
		- ------------- - -
			-
		--
		- -------------------------- -
			---------------------- ------
		-
	--
	-- --- -- - -
		- ------------- - -
			-
		--
		- -------------------------- -
			---------------------- --- --- - ----------
		-
	-
---

在渲染进程中使用:

- ----
	---------------- ---
	---------------- --- - -
		----------
	---
-

因业务需要, testFn会执行多次,导致receive方法的回掉函数也执行多次。

这是因为,每次执行electronAPI.receive方法,都在ipcRenderer上添加一个监听方法,可在preload.js中通过ipcRenderer.listeners(channel)方法查看。

问题解决

在每次监听主进程返回的时候,都需要清除掉上个监听。

- --

- -
	--------------
	-----------
- - -----

------------------ -
	- -
	-- --- -- - -
		-----------------------
	-
---

使用

- ----
	---------------- ---
	-----------------
	---------------- --- - -
		----------
	---
-