MessageChannel是前端的api,可以让我们创建一个消息通道,以此发送数据.
示例
const { port1, port2 } = new MessageChannel();
port1.onmessage = function(event) {
console.log("port1收到的数据:", event.data);
}
port2.onmessage = function(event) {
console.log("port2收到的数据:", event.data);
}
port1.postMessage("port1发送的数据");
port2.postMessage("port2发送的数据");
// port2收到的数据: port1发送的数据
// port1收到的数据: port2发送的数据
可用来深拷贝
function deepCopy(obj) {
return new Promise((resolve) => {
const {port1, port2} = new MessageChannel();
port2.onmessage = ev => resolve(ev.data);
port1.postMessage(obj);
});
}
deepCopy(obj).then((copy) => { // 请记住`MessageChannel`是异步的这个前提!
let copyObj = copy;
console.log(copyObj, obj)
console.log(copyObj == obj)
});
本文介绍MessageChannel API在前端开发中的应用,包括如何利用它实现数据的双向通信及进行对象的深拷贝操作。通过示例代码展示了port1与port2之间的消息传递过程,并给出了一种基于MessageChannel实现的异步深拷贝方法。
1727

被折叠的 条评论
为什么被折叠?



