js是单线程,也有多线程只不过是伪多线程,例如setTimeout,
worker 是多线程,是真的多线程,不是伪多线程
worker 不能操作dom,没有window对象,不能读取本地文件,可以发送ajax 可以计算。
const beginTime = Date.now()
console.log("++++++")
console.log("++++++")
console.log("++++++")
let a = 1000;
const worker = new Worker("./worker.js")
// 启动线程
worker.postMessage({
num:a,
})
// 接受线程返回信息
worker.onmessage = function(e){
console.log(e.data)
}
console.log("++++++")
console.log("++++++")
console.log("++++++")
const endTime = Date.now() - beginTime + "毫秒";
console.log("运行时间为"+endTime)
// worker.terminate() //结束线程
worker.js 代码如下
// 等待主线程调用
this.onmessage = function(e){
let result = 0;
for(let i = 0 ; i < e.data.num ; i++){
result += i
}
// 向主线程发送数据
this.postMessage(result)
const wor = new Worker("./worker2.js")
wor.postMessage(result)
// this.close() //结束线程
}
worker2.js 代码如下
this.onmessage = function(e){
console.log(2)
}