Open tanxukun opened 2 years ago
MessageChannel允许我们在不同的浏览上下文,比如window.open()打开的窗口或者iframe等之间建立通信管道,并通过两端的端口(port1和port2)发送消息。MessageChannel以DOM Event的形式发送消息,所以它属于异步的宏任务。
Vue的nextTick的实现经过了多次的调整。在Vue2.5以前,nextTick优先使用微任务Promise来实现。到了2.5版本,Vue引入MessageChannel,nextTick的实现优先使用setImmediate,平台不支持则使用MessageChannel,再不支持才使用Promise,最后用setTimeout兜底。
由于requestIdleCallback工作帧率低,只有20FPS,还有兼容问题,React并没有使用它,而是用requestAnimationFrame和MessageChannel进行polyfill。
从上到下按照规则比较,直到能得到确切结果为止
POST的Content-Type常见
Event Loop事件循环机制
宏任务 macro task
微任务 micro task
MessageChannel
MessageChannel允许我们在不同的浏览上下文,比如window.open()打开的窗口或者iframe等之间建立通信管道,并通过两端的端口(port1和port2)发送消息。MessageChannel以DOM Event的形式发送消息,所以它属于异步的宏任务。![image](https://user-images.githubusercontent.com/18048785/184054338-0d698dc6-81fa-4bfb-b551-970aa407e8fa.png)
在Vue中的使用
Vue的nextTick的实现经过了多次的调整。在Vue2.5以前,nextTick优先使用微任务Promise来实现。到了2.5版本,Vue引入MessageChannel,nextTick的实现优先使用setImmediate,平台不支持则使用MessageChannel,再不支持才使用Promise,最后用setTimeout兜底。
在React中的使用
由于requestIdleCallback工作帧率低,只有20FPS,还有兼容问题,React并没有使用它,而是用requestAnimationFrame和MessageChannel进行polyfill。