首页 > 编程语言 >#yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之Worker

#yyds干货盘点#【愚公系列】2022年10月 微信小程序-全局配置属性之Worker

时间:2022-10-17 19:00:19浏览次数:48  
标签:function yyds 10 微信 workers worker json Worker res

一、app.json配置属性之Worker

我们知道js是单线程的,在有时候需要处理一些密集计算或者是高延迟的时候,总会出现不便。而且,现在的cpu都是多核的,单线程也无法充分发挥电脑的计算能力。正是基于这种情况,才有了worker的诞生。

一些异步处理的任务,可以放置于 Worker 中运行,待运行结束后,再把结果返回到小程序主线程。Worker 运行于一个单独的全局上下文与线程中,不能直接调用主线程的方法。

Worker 与主线程之间的数据传输,双方使用 Worker.postMessage() 来发送数据,Worker.onMessage() 来接收数据,传输的数据并不是直接共享,而是被复制的。

二、配置

1.app.json

在app.json中配置worker目录

{
  "pages": [
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "WeChat",
    "navigationBarTextStyle": "black"
  },
  "workers": "workers",
  "sitemapLocation": "sitemap.json"
}

如下图: 在这里插入图片描述

2.子线程

// myworker.js
worker.onMessage(function(res){
 console.log('这是worker内部线程打印的')
 console.log(res)
 let sum = add(res.x,res.y);
 worker.postMessage({
  sum : sum
 })
});
 
function add(x,y){
 return x+y;
}

3.主线程

onLoad: function (options) {

 const worker = wx.createWorker('/workers/request/index.js');
 worker.postMessage({
  x : 10,
  y : 2
 });

 worker.onMessage(function(res){
  console.log('这是主线程打印的')
  console.log(res)
 });
},

4.监听回收事件

function createNewWorker() {
  const worker = wx.createWorker('workers/request/index.js', {
    useExperimentalWorker: true
  })
  // 监听worker被系统回收事件
  worker.onProcessKilled(() => {
    // 重新创建一个worker
    createNewWorker()
  })
}
// 创建实验worker
createNewWorker()

5. 注意事项

  • Worker 最大并发数量限制为 1 个,创建下一个前请用 Worker.terminate() 结束当前 Worker
  • Worker 内代码只能 require 指定 Worker 路径内的文件,无法引用其它路径
  • Worker 的入口文件由 wx.createWorker() 时指定,开发者可动态指定Worker 入口文件
  • Worker 内不支持 wx 系列的 API
  • Workers 之间不支持发送消息
  • Worker 目录内只支持放置 JS 文件,其他类型的静态文件需要放在 Worker 目录外
  • 基础库 v2.18.1 开始支持在插件内使用 worker。相应地,插件使用worker前需要在plugin.json内配置workers代码路径,即一个相对插件代码包根目录的路径。

标签:function,yyds,10,微信,workers,worker,json,Worker,res
From: https://blog.51cto.com/u_15437432/5763854

相关文章

  • AcCoders 10692:【2022NOIP联测10 10月17日】交换(swap) 题解
    考虑把一次交换产生的贡献记录在交换的两个数字中较小的那个数字上。则构造一个好的序列的过程可以看成是:按照从小到大的顺序枚举每个数,每次选择将这个数放在序列的左边或......
  • 10.17
    今日内容1.异常常见类型2.异常处理语法结构3.异常处理补充4.异常处理实战应用5.生成器对象6.yield冷门用法7.生成器表达式1.异常常见类型SyntaxErrorNameError......
  • @Value进阶玩法指南(转自微信公众号苏三说技术)
    前言对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了。spring给开发者提供了非常丰富的api,满足我们日常的工作需求。如果想要创建bean实例,可以使用@Control......
  • python学习记录10: turtle绘制简易动态时钟源码
     '''Function:  简易时钟'''importturtleimportdatetime'''悬空移动'''defmove(distance):  turtle.penup()  turtle.forward(distance)  t......
  • 工作总结反思2022年10月17日
    2022年10月17日晴,今天是比较冷的一天,今天迟到了,明天不能迟到了,最近的工作都是别人推送的,解决之前先得问同事,然后进行解决,主要的解决方法,自己不会,要多问,多学,看日志,别的......
  • 10_多任务
    一.并发和并行1.多任务:一定时间段内,充分利用cpu资源,同时去执行多个任务2.并发:快速交替的去执行多任务3.并行:真正同时的去执行多任务,就是同时进行二.......
  • 考研英语不熟悉的词义(List6-List10)
    目录考研英语不熟悉的词义(List6-List10)List6(48个)List7(46个)List8(48个)List9(52个)List10(40个)考研英语不熟悉的词义(List6-List10)List6(48个)单词不熟悉的词义lo......
  • 保10万涨薪、保Offer、保大厂,1V1私教服务上线啦!
    受大行情影响目前整个互联网行业的就业形势日渐严峻,上半年保住工作,下半年保住老板。裁员潮一波接一波,很多大厂也加入了裁员行列,裁员比例超过30%。有些同学辞职之后,很久没......
  • 1110 区块反转(JAVA)
    给定一个单链表L,我们将每K个结点看成一个区块(链表最后若不足K个结点,也看成一个区块),请编写程序将L中所有区块的链接反转。例如:给定L为1→2→3→4→5→6→7→8,K为......
  • python进制转换(附10进制与(2/8/16)进制互转实例)
    ......