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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 华为模拟器ensp怎么安装_模拟器下载手机版

    华为模拟器ensp怎么安装_模拟器下载手机版华为模拟器ENSP下载与安装教程【一】:安装环境1.Win10系统安装也可虚拟机安装【二】安装链接点击连接下载提取码:ob2v要是感觉下载慢的话可以开个会员(土豪随意)步骤1.下载后解压并安装,首先要先在安装这三个软件2.下面我们开始安装VirtualBox5.2.26并默认安装直接下一步就可以下面几步都是默认安装如图所示安装完成不想打开把运行勾去掉就行,点击完…

    2022年10月15日
    40
  • Jlink接口的Jtag和SWD接口定义「建议收藏」

    Jlink接口的Jtag和SWD接口定义「建议收藏」原址https://blog.csdn.net/u014124220/article/details/50829713Jlink仿真器接口仿真器端口连接目标板备注1.VCCMCU电源VCCVCC2.VCCMCU电源VCCVCC3.TRSTTRSTTestReSeT/pin4.GNDGND或悬空 5.TDITDITestDataInpin6.GNDGND或悬空 7.TMS,…

    2022年5月29日
    53
  • wifi 频段表_史上最全无线通信频率分配表,转走收藏!

    wifi 频段表_史上最全无线通信频率分配表,转走收藏!5GNR3GPP已指定5GNR支持的频段列表(可查看TS381045.2章节),5GNR频谱范围可达100GHz,指定了两大频率范围:①Frequencyrange1(FR1):就是我们通常讲的6GHz以下频段•频率范围:450MHz-6.0GHz•最大信道带宽100MHz②Frequencyrange2(FR2):就是毫米波频段•频率范围:24.25GHz-52.6…

    2022年10月20日
    4
  • java修改session默认过期时间「建议收藏」

    java修改session默认过期时间「建议收藏」java修改session默认过期时间    程序中session都有一个默认的过期时间,其中tomcat中的默认时间为30分钟,根据需要我们可以去手动设置session的过期时间,以下是设置session的过期时间的三个方法:  1.在tomcat–>conf–>conf/web.xm中的中设置:       30  

    2022年7月16日
    73
  • Microsoft Office 2007正式版序列号,可通过正版验证[通俗易懂]

    Microsoft Office 2007正式版序列号,可通过正版验证[通俗易懂]MicrosoftOffice2007AppKey:RYX9X-2WR37-XTBXD-CGGCJ-FQ8BJFWVFQ-P23PG-PQC4W-X299G-D44MJFJYC4-Y8JTR-T8RKY-4GBD4-TQK38J8TVY-RW6CH-K4K92-JW4T8-B4THWMJJHT-2G2B3-GTWVP-BHX3C-WKCVWMJCXB-73MGC-GY37D-Y…

    2022年7月19日
    21
  • CGlib 入门

    CGlib 入门CGlib入门cglibgithub地址链接。项目maven构建:cglibcglib3.1项目gradle构建:dependencies{compile’cglib:cgl

    2022年6月5日
    24

发表回复

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

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