HTML5 Web Worker的介绍(附示例)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于HTML5 Web Worker的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

浏览器中的Web Worker

背景介绍

我们都知道JavaScript这个语言在执行的时候是采用单线程进行执行的,也就是说在同一时间只能做一件事,这也和这门语言有很大的关系,采用同步执行的方式进行运行,如果出现阻塞,那么后面的代码将不会执行,HTML5则提出了web Worker标准,表示JavaScript允许有多个线程,但是子线程完全受主线程的控制,子线程不能操作DOM,只有主线程可以操作DOM,所以以主线程为主的单线程执行原理成了JavaScript这门语言的核心。

进程与线程的区别

根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位。
在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行。

兼容性

3265870119-5c8a4aa6a212f_articlex.png

web worker是什么?

简单来说,其实就是在Javascript单线程执行的基础上,开启一个子线程,进行程序处理,而不影响主线程的执行,当子线程执行完毕之后再回到主线程上,在这个过程中并不影响主线程的执行过程。

举个栗子

传统情况下,执行下面的代码后,整个页面都会被冻结,由于javascript是单线程处理,如下代码已经完全组塞了后续的执行

1

while(1){}

如果换一种方式,我们通过开启一个新的线程来执行这段代码,将他放在一个单独的worker.js文件中,在主线程执行以下代码,则可以避免这种情况。

1

var worker = new Worker("worker.js")

Web Worker的用法

判断当前浏览器是否支持web worker

1

2

3

4

5

6

7

8

9

10

11

12

if (typeof (Worker) != "undefined") { //浏览器支持web worker 

    if (typeof (w) == "undefined") { //w是未定义的,还没有开始计数       

        w = new Worker("webworker.js"); //创建一个Worker对象,利用Worker的构造函数 

    }

    //onmessage是Worker对象的properties 

    w.onmessage = function (event) { //事件处理函数,用来处理后端的web worker传递过来的消息 

        // do something

    };

}

else { // 浏览器不支持web worker

    // do something

}

API

①创建新的Worker

阅读剩余部分

相关阅读 >>

HTML5实现图片的3d旋转效果

学习javascript里的dom知识

如何获取微信小程序登录的session?(详细)

h5 canvas实现粒子时钟的详细方法

字符编码是什么?HTML5如何设置字符编码?

javascript中创建对象的方法有哪几种

浏览器如何运行javascript

html和HTML5的区别是什么

javascript关于数组的方法有哪些不同之处?

javascript日期格式如何转换成年月日

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...