uni-app下Worker的使用示例详解

 更新时间:2024年08月08日 09:46:09   作者:吴胜ws  
这篇文章主要介绍了uni-app下Worker的使用示例详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

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。

到此这篇关于uni-app下Worker的使用的文章就介绍到这了,更多相关uni-app Worker使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript实现封装一个快速生成目录树的全局脚本

    JavaScript实现封装一个快速生成目录树的全局脚本

    目录树可以很好的介绍项目中各文件目录的用途,帮助读者了解整个项目结构。本文就来用JavaScript封装一个快速生成目录树的全局脚本,希望对大家有所帮助
    2023-03-03
  • 解读函数的节流与防抖问题

    解读函数的节流与防抖问题

    这篇文章主要介绍了解读函数的节流与防抖问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • js原生轮播图插件制作

    js原生轮播图插件制作

    这篇文章主要为大家详细介绍了js原生轮播图插件制作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JS代码格式化和语法着色V2

    JS代码格式化和语法着色V2

    JS代码格式化和语法着色V2...
    2006-10-10
  • Taro 小程序持续集成实现及原理

    Taro 小程序持续集成实现及原理

    这篇文章主要为大家介绍了Taro 小程序持续集成实现及原理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 在小程序Canvas中使用measureText的方法示例

    在小程序Canvas中使用measureText的方法示例

    有时候我们在使用Canvas绘制一段文本时,会需要通过measureText()方法获取文本的宽度,本文主要介绍了在小程序Canvas中使用measureText的方法示例,需要的朋友可以参考下
    2018-10-10
  • 通过JavaScript实现图片压缩

    通过JavaScript实现图片压缩

    在学习的时候,有时候看到一些一些网站的图片是经过压缩处理的,因为压缩之后的图片会节省一部分你的内存空间,这样的话也可以提升性能,于是就比较好奇这是如何实现的,今天我们就简单的实现一下,需要的朋友可以参考下
    2023-06-06
  • 原生JS实现$.param() 函数的方法

    原生JS实现$.param() 函数的方法

    这篇文章主要介绍了原生JS实现$.param() 函数的方法,由于遇到相关序列化的问题,但是vue项目中由于减少队jquery引用的限制,导致不能用$.param来序列化参数,下面小编给大家分享了实例代码,需要的朋友参考下吧
    2018-08-08
  • JS实现关闭当前页而不弹出提示框的方法

    JS实现关闭当前页而不弹出提示框的方法

    这篇文章主要介绍了JS实现关闭当前页而不弹出提示框的方法,结合实例形式分析了JS操作页面的打开、关闭及父页面的关闭技巧,需要的朋友可以参考下
    2016-06-06
  • 基于JavaScript编写8086汇编指令查询工具

    基于JavaScript编写8086汇编指令查询工具

    汇编语言还是在大学的时候学的,汇编语言有个特点是语句短、条数多,很难可以把全部指令都背熟。本文就来用JavaScript编写一个8086汇编指令查询工具,希望对大家有所帮助
    2023-02-02

最新评论