【愚公系列】2022年02月 微信小程序-app.json配置属性之Worker

简介: 【愚公系列】2022年02月 微信小程序-app.json配置属性之Worker

一、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"
}

如下图:

image.png


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代码路径,即一个相对插件代码包根目录的路径。

相关文章
|
2月前
|
小程序 前端开发
生活商城app微信小程序模板源码
生活商城app微信小程序模板源码
39 6
|
2月前
|
小程序 前端开发
汽车报价资讯app小程序模板源码
汽车报价资讯app小程序模板源码
25 4
|
1天前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
8 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
7天前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
18天前
|
开发工具 Android开发
|
2月前
|
小程序 前端开发
仿哔哩哔哩视频app小程序模板源码
仿哔哩哔哩视频app小程序模板源码
104 5
仿哔哩哔哩视频app小程序模板源码
|
18天前
|
移动开发 前端开发 JavaScript
|
18天前
|
存储 前端开发 Java
|
19天前
|
小程序
uni-app——微信小程序设置全局分享
uni-app——微信小程序设置全局分享
34 0
|
24天前
|
移动开发 JavaScript 开发工具
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app
微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

热门文章

最新文章

下一篇
云函数