JS引擎线程

也成为JS内核,负责处理JavaScript脚本程序,与GUI线程互斥

Web APIs

  • 异步模式API

    调用之后先不管结果,继续向下执行任务
    setTimeout()
    setInterval()
    … …

  • 同步模式API

    会逐行执行代码,会对后续代码造成阻塞,直至代码接收到预期的结果之后,才会继续向下执行任务
    console.log()
    alert()
    … …

    GUI线程

    负责渲染浏览器界面,解析HTML、CSS、构建DOM树和RenderObject树,布局与绘制等

    定时器线程

    setInterval与setTimeout所在线程

    事件触发线程

    将满足触发条件的事件放入任务队列

    异步http请求线程

    XHR在连接后是通过浏览器新开一个线程请求

    Web Worker线程

    注意事项

  • 同源限制

    1. 分配给Web Worker线程的脚本必须和主线程的脚本文件同源
  • DOM限制

    1. Web Worker线程所在的全局对象与主线程不一样,无法读取主线程所在网页的DOM对象,也无法使用documentwindowparent这些对象,但是可以使用navigator对象和location对象
  • 通信联系

    1. Web Worker线程和主线程不在同一个上下文环境,不能和主线程通信,必须通过消息完成
  • 脚本限制

    1. Web Worker线程不能执行alertconfirm,但是可以使用XHRHttpRequest对象发送ajax请求
  • 文件限制

    1. Web Worker线程无法读取本地文件,只能加载网络脚本