📅  最后修改于: 2020-11-01 08:58:41             🧑  作者: Mango
Web Workers是独立的JavaScript代码,它们在网页的后台运行而不影响用户界面。
每个人都希望一个网站或应用程序能够快速运行,并且可以在不影响页面性能的情况下同时执行多项操作。但是,有时我们在执行一些大操作时会遇到一些延迟响应或页面性能下降。因此,可以使用Web Workers解决此问题。
Web Worker是一个多线程对象,可以并行执行多个JavaScript,而不会影响应用程序或网页的性能。
以下是Web Workers的一些关键功能:
提示:使用HTML Web Worker之前,您必须具有JavaScript知识,因为Web Worker依赖JavaScript。
在HTML5中,Web Workers有两种类型:
专用工作者只能通过一个调用它的脚本来访问。专用工作线程结束,其父线程结束。专用工作者只能由一个或单个主线程使用。
它可以由多个脚本共享,并且可以使用端口进行通信。共享的工作程序可以通过不同的窗口,iframe或工作程序访问。
注意:在本节中,我们将使用专用的Web Worker。
在首先学习Web Workers之前,我们需要检查浏览器支持。因此,以下是检查您的浏览器是否支持的代码。
Web Worker API
Example to check the browser support of Web Workers
要创建Web Worker文件,我们需要创建一个外部JavaScript文件。
在这里,我们创建了一个用于计算数字平方的Web Workers文件。并将其保存为名称“ worker.js”。
以下是worker.js文件的代码。
onmessage =function(event){
var num= event.data;
var sqr=num*num;
var result="";
for(var i=1;i<=sqr; i++)
{
result= "Sqaure result is:"+ " "+i;
}
postMessage(result);
}
在上面的“ worker.js”文件中,我们为Web Worker创建了JS文件,现在它需要调用HTML文件。要创建Web Worker对象,您需要调用Worker()构造函数。
以下是调用和创建Web Worker对象的语法:
var worker= new Worker('worker.js');
Worker线程的所有通信均取决于postMessage()方法和onmessage事件处理程序。
如果要立即终止主线程中当前正在运行的工作程序,则可以通过调用Web Worker的Terminate()方法来终止它。以下是Web Worker终止的语法:
worker.terminate();
也可以通过调用close()方法在工作线程中终止Web Worker。
Example of Web Worker
Note:Try to enter a big number, and then click on other button. The page will respond properly
Worker.js文件:
onmessage=function(event){
var num= event.data;
var sqr=num*num;
var result="";
for(var i=1;i<=sqr; i++)
{
result= "Sqaure result is:"+ " "+i;
}
postMessage(result);
}
在上面的HTML文件示例中,我们使用了
API | Chrome | IE | Firefox | Opera | Safari |
Web Workers | Yes | Yes | Yes | Yes | Yes |