| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 学习webworker -> 正文阅读 |
|
[JavaScript知识库]学习webworker |
1. 什么是webworker理论多代码少的一个新特性 MDN是这样说的
可以这样理解:
如果有非常耗时的cpu密集型工作,可以单独开一个Worker线程,因为里面不管如何翻天覆地都不会影响JS引擎主线程, 而且注意下,JS引擎是单线程的,这一点的本质仍然未改变,Worker可以理解是浏览器给JS引擎开的外挂,专门用来解决那些大量计算问题。 2. webworker帮助我们解决了什么问题,该如何去使用webworker呢一些非常耗时的工作会阻塞js的代码,这种情况就需要使用这个东西。 举个例子:我们在两个button中间加一段耗时的script代码。
1.js的耗时代码:
这里我们一般不这样写代码,但是确实一个很好的线程阻塞的问题,因为js的单线程,浏览器的渲染引擎将第一个button渲染结束的时候,执行了script脚本,cpu被js引擎占用,如果这个耗时操作不结束,渲染引擎将无法继续工作,导致页面不能正常的工作。 A. 开启worker我们这个时候开启一个Worker即可解决这个问题。(注意这个不能读取本地的js文件,否则会报错,只能是服务端的js脚本文件)
只是执行代码还是有些单薄的,我们还需要实现主线程与worker线程之间的通讯 B. 主线程 -> worker线程主线程调用worker.postMessage()方法,向 Worker 发消息。
主线程通过worker.onmessage指定监听函数,接收子线程发回来的消息。
Worker 完成任务以后,主线程就可以把它关掉。
填坑举例:这个监听一般都是异步的所以我们在主线程关闭的时候要在onmessage中将数据处理完成之后关闭。
C. worker线程 -> 主线程Worker 线程内部需要有一个监听函数,监听message事件,监听从主线程来的消息
上面代码中,self代表子线程自身,即子线程的全局对象。因此,等同于下面两种写法。
子线程调用worker.postMessage()方法,向 主线程发消息。
子线程接收主线程的消息,并且发送给主线程结果,然后关闭自己
子线程关闭自己
D. 关闭 Worker使用完毕,为了节省系统资源,必须关闭 Worker。
以上就已经完成了worker最基本的使用了。 还在阮一峰老师的博客上看到其他的两个方法在这里搬运一下 1. 在 Worker 内加载脚本Worker 内部如果要加载其他脚本,有一个专门的方法importScripts()。
该方法可以同时加载多个脚本。
2. 错误处理主线程可以监听 Worker 是否发生错误。如果发生错误,Worker 会触发主线程的error事件。
到这里,最基本的webworker的使用就结束了,希望大家能有所收获。 参考文档: |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:26:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |