给postmessage加上callback方法

本文探讨如何在postmessage的跨窗口通信中模拟传递和执行callback,通过在本窗口缓存callback并在onmessage事件中调用来保持业务逻辑的连续性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

postmessage双向通信中,是不能使用回调函数的。

window.postmessage({msg:'hello',callback:function(e){
    do something with e
}})

这样是不行的,js会提示function不会被克隆。

我猜啊因为postmessage是通过dom通讯,js对象会被json化

也就是说不能传递方法。

不过,话说回来,有什么不能的呢,大不了,把function tostring一下,也是可以传过去的。

那这里就要考虑你传callback是干什么用了,如果是作为一种自定义 的数据处理方法,你就tostring一下,过去随便用用就好了,就好像foreach那样,传一个方法,在foreach内部用用。

如果就是想要得到返回值,让自己的书写比较连续。业务逻辑比较连续,callback的结果不会再传到对面。也就是说,callback始终是在本window下运行的。

保持业务逻辑连续的在你所写的方法里,不会因为调用postmessage而把业务处理逻辑跳跃到onmessage里。

这是我要在这里讨论的。

1.很显然,callback从来没真正被传递到对面window里。

2.callback将在onmessage(addlisto

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值