webworker

webworker实战场景
引言
js是单线程的,在主线程中执行js代码,会阻塞页面的渲染和其他事件的处理,但是当遇到大量CPU密集型的计算时,会导致页面卡顿,影响用户体验。
为什么使用webworker
webworker为js创建多线程环境,主线程开辟一个子线程,将计算的任务放在子线程中执行,计算完成后交回主线程,而不造成页面的卡顿。
web worker 分类
- DedicatedWorker
- 只能为一个页面使用(主要讲解)
- SharedWorker
- 可以被多同源个页面使用
web worker限制
1. 同源限制
2. 文件限制
3.DOM限制
4.模板引入问题
简单示例
1 | // App.vue |
// piblic/worker.js
self.addEventListener('message', function(e) {
if(e.data){
console.log("收到",e.data);
}
// 发送消息给主线程
self.postMessage(5000);
});