js中的MessageChannel是什么?

Vue深入响应式原理中提到:Vue在内部尝试对异步队列使用原生的Promise.thenMessageChannel,如果执行环境不支持,会采用setTimeout(fn,0)代替。

那么MessageChannel是什么呢?又是如何使用的呢?

MessageChannel接口允许创建一个新的消息通道,并通过它的两个MessagePort属性发送数据。MessageChannel接口实例化以后,会有两个属性port1port2.

var channel = new MessageChannel();
var port1 = channel.port1;
var port2 = channel.port2;
port1.onmessage = function (event) {
  console.log("port2对port1说:"+event.data);
}
port2.onmessage = function (event) {
  console.log("port1对port2说:"+event.data);
}

port1.postMessage("Hello");
port2.postMessage("Hi");

参考链接

  • MessageChannel
  • MessageChannel是什么,怎么使用?

你可能感兴趣的:(js中的MessageChannel是什么?)