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)}
