MessageChannel API允许我们创建一个新的消息通道,并通过它的两个MessagePort属性发送数据。

但是在拷贝包含function的对象时候会报错,提示无法copy

示例代码:

function copy(e) {
    const { port1, port2 } = new MessageChannel()
    port1.postMessage(e)
    return new Promise((resolve, reject) => {
        port2.onmessage = (event) => {
            resolve(event.data)
        }
    })
}

const test =  async function (params) {
    const a = {
        a: 1,
        b: 2,
    }
    const b = await copy(a)
    a.a = 5
    console.log(a, b);
}
test()

标签: none

添加新评论