众所周知,js是单线程,但是可以开启子线程来帮忙处理一些数据,但是这个子线程是有限制的
1.必须是同源
2.完全受主线程控制
3.不能在子线程中操作dom节点
4.子线程没有window
,可以使用self
5.等等
具体的查看官网
进程切换是要耗时间的,所以进程不宜开太多,一般等于CPU内核数最好,可以通过window.navigator.hardwareConcurrency
来获取
使用方法
//主进程,也就是平时的普通js文件
console.log("我是主线程");
const myworker = new Worker("/js/child.js", { name: "myWorker" });
myworker.postMessage("Hello World"); //给子进程传值
myworker.onmessage = function (event) {console.log(event.data); //接收子进程的传值
};
//子进程,子进程里面使用有很多限制,建议看官网
console.log("我是子线程");
self.addEventListener('message',function(e){var data = e.data;console.log(data)
},false)
self.postMessage("我是子线程发的信息");