Web Worker详解

Web Worker详解WebWorker1.WebWorker概述最近在看一些关于WebWorker的数据和视频,把以下重点分享给大家(推荐有基础的小伙伴收藏)客户端JavaScript其中一个基本的特性就是单线程,比如浏览器无法同时运行两个事件处理程序,也无法在一个事件处理程序运行的时候触发定时器。之所以设置单线程的理论就是,客户端的JavaScript的函数不能运行太长时间,否则会导致循环事件,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

Web Worker


1.Web Worker概述

最近在看一些关于Web Worker的数据和视频,把以下重点分享给大家 ( 推荐有基础的小伙伴收藏 )

客户端JavaScript其中一个基本的特性就是单线程,比如浏览器无法同时运行两个事件处理程序,也无法在一个事件处理程序运行的时候触发定时器。之所以设置单线程的理论就是,客户端的JavaScript的函数不能运行太长时间,否则会导致循环事件,Web浏览器无法对用户输入做出响应,这也是为什么AJAX的API都是异步的,以及为什么客户端Javascript不能使用一个简单的异步load()或者require()函数来加载javascript库。

在Web Worker标准中,定义了解决客户端JavaScript无法多线程的问题,其中定义的 ” Worker ” 是指执行代码的并行线程,不过,Web Worker处在一个自包含的执行环境中,无法访问Window对象和Document对象,和主线程之间的通信也只能通过异步消息传递机制实现,这就意味着,并行的修改DOM是不可能的。


2.Web Worker基本使用

判断当前浏览器是否支持web worker
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
}

Jetbrains全家桶1年46,售后保障稳定

API
①创建新的Worker

var worker = new Worker(“worker.js”)

②传递参数

worker.postMessage()

③接收消息

worker.onMessage = function(msg){}

④异常处理

worker.onerror = function(err){}

⑤结束worker

worker.terminate()

⑥载入工具类函数

importScripts()

Worker作用域

当我们创建一个新的worker时,该代码会运行在一个全新的javascript的环境(WorkerGlobalScope)运行,是完全和创建worker的脚本隔离,这时我们可以吧创建新worker的脚本叫做主线程,而被创建的新的worker叫做子线程。
WorkerGlobalScope是worker的全局对象,所以它包含所有核心javascript全局对象拥有的属性如JSON等,window的一些属性,也拥有类似于XMLHttpRequest()等。但是我们所开启的新的worker也就是子线程,并不支持操作页面的DOM。

web worker是在后台运行的脚本,和其它脚本是独立的,不会影响页面的执行.当web
worker在后台运行时你可以继续做你想做的:单击,选择之类的操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234990.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mapminmax 用法

    mapminmax 用法mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

    2022年6月30日
    20
  • 磁盘阵列 mysql_Mysql 系列 磁盘阵列

    磁盘阵列 mysql_Mysql 系列 磁盘阵列RAID基本思想就是把多个相对便宜的硬盘组合起来,使其组合成一个容量更大、更安全的硬盘组.目前已有的RAID硬盘组方案至少有几十种,其最常用的要数RAID5与RAID10硬盘组方案。软RAID(software-basedRAID)是基于软件的RAID。它可能是最普遍的被使用的RAID阵列,这是由于现在的很多服务器操作系统都集成了RAID功能。硬RAID(这里只讨论基于总线的RAID)是由内建…

    2022年6月11日
    47
  • 贪心算法之背包问题

    贪心算法之背包问题

    2021年9月10日
    66
  • php域名免备案转发,免备案高防CDN支持过墙域名跳转解决域名DNS污染

    php域名免备案转发,免备案高防CDN支持过墙域名跳转解决域名DNS污染免备案服务器联系咨询我QQ:281846000全国节点,自动切换,保证业务的安全和稳定1.301跳转,解决域名被墙,国内免备案不限制内容服务器。2.域名防劫持,DNS防护专属套餐,视频***CDN加速等业务(免&备*案CDN)3.出租海内外高防服务器(TB级防护)4.解决域名DNS被污染问题。(被DNS污染期间不要回源到自己网站,使用过墙DNS24-48小时自动恢复,不要轻易转入他人…

    2022年9月10日
    0
  • 美国网件对KRACK WPA2安全漏洞做出回应:表示正积极跟进修复[通俗易懂]

    美国网件对KRACK WPA2安全漏洞做出回应:表示正积极跟进修复[通俗易懂]NETGEAR美国网件意识到最近公布的安全漏洞KRACK,它利用了WPA2(WiFi保护访问II)中的安全漏洞。美国网件现正在积极跟进修复,已更新了多个产品的修复程序,请浏览美国网件官方网站(https://kb.netgear.com/000049498/Security-Advisory-for-WPA-2-Vulnerabilities-PSV-2017-2826-PSV-2017-2836…

    2022年5月29日
    38
  • java 封装

    java 封装1.封装简介概念将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作。好处a.只能通过规定的方法访问数据。b.隐藏类的实例细节,方便修改和实现。为啥要对java的类进行封装?个人认为当做一个项目的时候里面的类很多,打个比方一个大公司部门很多,老板不是每个员工都认识,但是“各部门

    2022年7月8日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号