前言 对于前端开发者来说,多线程是一个比较陌生的话题.因为JavaScript是单线程语言.也就是说,所有任务只能在一个线程上完成,一次只能做一件事.前面的任务没做完,后面的任务只能等着. UI渲染与JavaScript是共同使用主线程.如果JavaScript运行过长,可能就会中断UI渲染,从而导致页面卡顿. 为此,JavaScript推出了异步的处理方法.但终归到底还是单线程的.而且随着电脑计算能力的增强,尤其是多核CPU的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力. Web
以前大家都认为js是单线程执行的,假如我们要执行一些耗时的操作,比如加载一张很大的图片,我们可能需要一个进度条来让用户进行等待,在等待的过程中,整个js线程会被阻塞,后面的代码不能正常运行,这可能大大的降低用户体验,这时候我们就期望拥有一个工作线程来处理这些耗时的操作.在传统的html时代是基本不可能实现的,而现在,我们拥有一种叫做worker的东西.它是js里的一个类,而我们只需要创建它的实例就可以使用它. var worker = new Worker(js file path); 构造函数
前言 本文仅是 Web Workers 的入门科普文章,不涉及太琐碎的知识点. 我们知道,在 Web Workers 出来之前,JavaScript 是单线程的.即使是 setTimeout 之类的看似多线程的函数,实际上也是单线程执行的. 有时,我们需要在浏览器执行一个比较耗时的计算: function count() { let i = 0 let sum = 0 for (let j = 0; j < 100; j++) { for (let i = 0; i < 100000000;