cocos creator 中使用web worker

1.应用场景:一些阻塞线程的方法可以放到worker里面去执行,不影响主线程,避免页面卡顿。

啊,有人就会说了,setTimeout不就可以了吗,还有什么async...

JS本身就是单线程设计的,不管你是setTimeout还是async都只不过是调换了执行顺序而已。

Web Workers API - Web API 接口参考 | MDN

我为什么需要用到呢?因为我的web3解密需要大概1-5S,此时数据已经拿回来了,但是用户不能跟页面交互,因为解密还在进行中,此时就需要worker来帮我做这件事了。

再举个例子吧,你在上班,但是你的快递到了,如果要去拿,就只能等到下班再去了,但是你家人在家,你就可以让你家人去帮你做这件事,而且不影响你上班。。

1.新建一个Worker.js,然后写代码


importScripts('https://xxx.com/web3/web3.min.js');
self.onmessage = function(e) {
    console.log(e.data);//主线程推送来的消息
    const web3 = new Web3(Web3.givenProvider);
    const {privateKey,pin} = e.data
    const pk = JSON.parse(privateKey)
    let rp = web3.eth.accounts.decrypt(pk, pin)
    self.postMessage(rp.privateKey) //发送消息到主线程
}

2.在你的ts脚本里面(要在onload里面new Worker),不然会报3817

3.主线程发消息到worker中

worker.postMessage({privateKey:'xxx',pin:'xxxx'})

 4.把你的项目打包出来,然后把Worker.js拷贝到根目录下面

 缺点就是调试比较麻烦

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值