uni-app下Worker的使用
创始人
2024-11-05 02:34:35
0

1、在static目录下创建一个目录用于存放worker文件
在这里插入图片描述
为啥要在static目录下创建worker目录呢?那是因为worker.js没办法在别的js中被引用,uni-app项目编译成微信小程序代码时会进行Tree-shaking(摇树优化),把那些没被引用的js文件给剔除掉,放在static目录下可以避免被摇树优化。

2、在pages.json文件中引用刚创建的worker目录

在这里插入图片描述
注意:pages.json最后一项后面不要有逗号,否则会报错

3、编写worker.js(名字任意取,要在上面创建的workers目录下面)
//MyWorker.js //用于接收外部消息 worker.onMessage(function(res) { 	console.log('worker内部线程') 	console.log(res) 	//用于发送 	worker.postMessage({ 		message: '收到worker的消息' 	}); }); 
4、主线程中创建调用和销毁Worker

1、创建Worker

let worker = wx.createWorker('/static/workers/MyWorker.js', { 	useExperimentalWorker: true, }); 

useExperimentalWorker: true 引用官方注释:是否使用实验worker。在iOS下,实验worker的JS运行效率比非实验worker提升近十倍,如需在worker内进行重度计算的建议开启此选项。同时,实验worker存在极小概率会在系统资源紧张时被系统回收,因此建议配合 worker.onProcessKilled 事件使用,在worker被回收后可重新创建一个。

2、发送消息给Worker线程

worker.postMessage({message:'主线程发来的消息'}) 

注:需要发送的消息,必须是一个可序列化的 JavaScript key-value 形式的对象。

3、监听Worker线程的消息

worker.onMessage((res)=>{ 	console.log('主线程打印的') 	console.log(res) }) 

4、结束当前Worker线程(仅限在主线程 worker 对象上调用)

worker.terminate() 
5、Worker中如何引入其他js

被引入的js文件必须要放在上面创建的Worker目录内部,不然无法引用

在刚创建的workers文件夹下创建一个Test.js文件

//Test.js function test(){ 	console.log('我是外部js文件中的内容') } export default{ 	test } 

MyWorker.js中引入该js

import Test from 'Test.js' //用于接收外部消息 worker.onMessage(function(res) { 	console.log('worker内部线程') 	console.log(res) 	Test.test();//调用其他js文件中的代码 	//用于发送 	worker.postMessage({ 		message: '收到worker的消息' 	}); }); 

打印结果:
在这里插入图片描述

使用worker注意事项:
  • Workers 之间不支持发送消息。
  • Worker 的入。口文件由 wx.createWorker() 时指定,开发者可动态指定 Worker 入口文件
  • Worker 内代码只能 require 指定 Worker 路径内的文件,无法引用其它路径。
  • Worker 最大并发数量限制为 1 个,创建下一个前请用 Worker.terminate() 结束当前 Worker。
  • Worker 内不支持 wx 系列的 API。

相关内容

热门资讯

第三方辅助!wepoker买脚... 第三方辅助!wepoker买脚本靠谱吗,财神十三张脚本辅助,法子教程(有挂解密)1)财神十三张脚本辅...
1分钟辅助!填大坑小程序辅助器... 1分钟辅助!填大坑小程序辅助器(辅助挂)总是真的有辅助工具(有挂分享);1、完成填大坑小程序辅助器辅...
第1分钟了解!wepoker辅... 第1分钟了解!wepoker辅助软件价格,哈糖大菠萝怎么挂,操作教程(讲解有挂)wepoker辅助软...
教程辅助挂!wepoker开辅... 教程辅助挂!wepoker开辅助能查到吗,wepoker私人局辅助器,指南教程(真的有挂)1、起透看...
第3分钟辅助!全来潜山跑风辅助... 您好,全来潜山跑风辅助器这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】很多...
1分钟了解!佛手在线大菠萝智能... 1分钟了解!佛手在线大菠萝智能辅助器,wpk俱乐部怎么作弊,窍门教程(了解有挂)1、1分钟了解!佛手...
经核实!wepoker看底牌,... 经核实!wepoker看底牌,微信小程序微乐家乡辅助器,办法教程(果真有挂)微信小程序微乐家乡辅助器...
7分钟辅助!决战卡五星辅助软件... 7分钟辅助!决战卡五星辅助软件(辅助挂)竟然存在有辅助插件(确实有挂)1.决战卡五星辅助软件 选牌创...
第三分钟了解!wepoker辅... 第三分钟了解!wepoker辅助软件价格,德扑圈有透视吗,教程书教程(发现有挂)进入游戏-大厅左侧-...
黑科技辅助挂!拱趴大菠萝机器人... 黑科技辅助挂!拱趴大菠萝机器人,免费游戏辅助软件,方案教程(真的有挂)1、玩家可以在免费游戏辅助软件...