ShareWorker的使用说明(网上的这些都太不详细了,容易误导大家)

官方并没有给出多个标签页共享线程的(明显)案例,所以会导致别人按照官网的代码写了,为什么没有推送到其他页面呢?经过自己反复测试,加上问了一些富有经验的同学,搞明白了,原因就是共享js没有存储客户端(标签页),接受到推送时候要向每个客户端都推送。


1.ShareWorker.js

        var clients = [];
onconnect = function(e) {
    var port = e.ports[0];
    clients.push(port);
    port.addEventListener('message', function(e) {
        for (var i = 0; i < clients.length; i++) {
            var eElement = clients[i];
            eElement.postMessage(e.data)
        }
    });
    port.start();
}

      

2.在需要推送的页面里面添加开启共享线程的代码,shareworker-message.js

        myWorker = new SharedWorker("script/scenesetting/ShareWorker.js");
myWorker.port.onmessage=function(e) {
    var result=e.data;//此处就是共享现成推送过来的数据可以是字符串、数组、json
    /***********上面拿到数据后,就可以在下面做一些你想造做的事************/
};

      

3.引用第二步的shareworker-message.js文件

        myWorker.port.postMessage(newData);
      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值