尤其对于计算量大的需求,js本身不支持多线程,使用web worker可实现类似多线程的效果,不会影响主线程的运行,不会造成页面卡顿。
1、引入
yarn add worker-loader -D
2、配置
vue.config.js中增加
config.module
.rule('worker')
.test(/\.worker\.js$/)
.use('worker-loader')
.loader('worker-loader')
.end()
config.module.rule('js').exclude.add(/\.worker\.js$/)
3、使用
a. 创建.worker.js文件
例如timer.worker.js
addEventListener('message', function(e) {
console.log(e, 'message')
this.timer()
})
b. vue页面导入
import Worker from './timer.worker.js'
async beforeMount() {
this.worker = new Worker()
this.worker.postMessage('message')
},
针对JavaScript不支持多线程的问题,文章介绍了如何使用Webworker来模拟多线程效果,以处理计算密集型任务,同时不会阻塞主线程导致页面卡顿。在Vue项目中,通过引入worker-loader并在vue.config.js中配置,可以方便地创建和使用worker文件,从而在timer.worker.js中处理消息并响应。

1253

被折叠的 条评论
为什么被折叠?



