Foreword
JavaScript 作为浏览器脚本语言,被定义为了只有单线程的语言,也就是同一时间只能做同一事情。
如果 JavaScript 不是单线程,那么就有点棘手了。比如,与用户交互或者对 DOM 进行操作时,在一个线程上修改某个 DOM,另外的线程删除 DOM,这就会造成冲突。
但是在 HTML5 中引入了 webWorker 的概念,为 JavaScript 引入了线程的概念,它允许开发人员编写能够长时间运行而不被用户所中断的后台程序,去执行事务或者逻辑,并同时保证页面对用户的响应。
但是子线程完全受主线程控制,且不得修改 DOM。
所以一般情况下 webWorker 的主要用途是处理一些比较耗时的计算