-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
在16.8中的scheduler中用到window.postmessage,这样会存在两个问题:
- 不是scheduler中的message处理函数也会被执行
- 不是scheduler中的postmessage会导致触发scheduler中的message处理函数。
为了避免第二个问题,scheduler中的message处理函数会判断接收的数据中是否有messageKey,如果没有那么是不会继续执行下去的。
但是第一个问题避免不了,每次postmessage都会执行与react-scheduler不相关的message事件处理函数。
现在最新的scheduler直接使用new MessageChannel来解决第一个问题,建立一个通信信道,利用port.postmessage代替window.postmessage,利用port.onmessage代替window.addEventListener('message', ...)。这个port实际就是这个MessageChannel专属的,不会导致信号串扰。
Metadata
Metadata
Assignees
Labels
No labels