js是单线程,也有多线程只不过是伪多线程,例如setTimeout,
    worker 是多线程,是真的多线程,不是伪多线程
    worker 不能操作dom,没有window对象,不能读取本地文件,可以发送ajax 可以计算。

    1. const beginTime = Date.now()
    2. console.log("++++++")
    3. console.log("++++++")
    4. console.log("++++++")
    5. let a = 1000;
    6. const worker = new Worker("./worker.js")
    7. // 启动线程
    8. worker.postMessage({
    9. num:a,
    10. })
    11. // 接受线程返回信息
    12. worker.onmessage = function(e){
    13. console.log(e.data)
    14. }
    15. console.log("++++++")
    16. console.log("++++++")
    17. console.log("++++++")
    18. const endTime = Date.now() - beginTime + "毫秒";
    19. console.log("运行时间为"+endTime)
    20. // worker.terminate() //结束线程

    worker.js 代码如下

    1. // 等待主线程调用
    2. this.onmessage = function(e){
    3. let result = 0;
    4. for(let i = 0 ; i < e.data.num ; i++){
    5. result += i
    6. }
    7. // 向主线程发送数据
    8. this.postMessage(result)
    9. const wor = new Worker("./worker2.js")
    10. wor.postMessage(result)
    11. // this.close() //结束线程
    12. }

    worker2.js 代码如下

    1. this.onmessage = function(e){
    2. console.log(2)
    3. }