您的位置:首页 > 财经新闻 >
说一说Web Workers是什么及Web Workers有什么用-当前热文
来源:华夏财富网 2022-11-04 08:51:22

今天来说一下关于Web Workers是什么及Web Workers有什么用这方面的一些讯息,不少朋友对于Web Workers是什么及Web Workers有什么用这方面的信息颇感兴趣的。小编今天就为此整理一些相关的讯息,希望对有需要的朋友有所帮助。


(相关资料图)

Web Workers 被定义万维网联盟(W3C)和网络超文本应用技术工作组(WHATWG),是一个 JavaScript 的脚本,从执行的 HTML 页面,在运行的背景,独立脚本的可能也已经从同一 HTML 页面执行。Web worker 通常能够更有效地利用多核 CPU。

Web Workers

Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。这样的好处是,一些计算密集型或高延迟的任务,被 Worker 线程负担了,主线程(通常负责 UI 交互)就会很流畅,不会被阻塞或拖慢。

Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

W3C 和 WHATWG 将 Web Worker 设想为长时间运行的脚本,这些脚本不会被响应点击或其他用户交互的脚本打断。防止此类工作人员受到用户活动的干扰,应该使网页在后台运行长任务的同时保持响应速度。

worker 的最简单用法是执行计算量大的任务,而不会中断用户界面。

Web Worker 为 Web 内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面。此外,他们可以使用 XMLHttpRequest 执行 I/O (尽管 responseXML 和 channel 属性总是为空)。一旦创建, 一个 worker 可以将消息发送到创建它的 JavaScript 代码, 通过将消息发布到该代码指定的事件处理程序(反之亦然)。

Web Workers API

一个 worker 是使用一个构造函数创建的一个对象(e.g. Worker()) 运行一个命名的 JavaScript 文件 – 这个文件包含将在工作线程中运行的代码; workers 运行在另一个全局上下文中,不同于当前的 window. 因此,使用 window 快捷方式获取当前全局的范围 (而不是 self) 在一个 Worker 内将返回错误。

在专用 workers 的情况下,DedicatedWorkerGlobalScope 对象代表了 worker 的上下文(专用 workers 是指标准 worker 仅在单一脚本中被使用;共享 worker 的上下文是 SharedWorkerGlobalScope 对象)。一个专用 worker 仅仅能被首次生成它的脚本使用,而共享 worker 可以同时被多个脚本使用。

在 worker 线程中你可以运行任何你喜欢的代码,不过有一些例外情况。比如:在 worker 内,不能直接操作 DOM 节点,也不能使用 window 对象的默认方法和属性。然而你可以使用大量 window 对象之下的东西,包括 WebSockets,IndexedDB 以及 FireFox OS 专用的 Data Store API 等数据存储机制。查看 Functions and classes available to workers 获取详情。

workers 和主线程间的数据传递通过这样的消息机制进行——双方都使用 postMessage()方法发送各自的消息,使用 onmessage 事件处理函数来响应消息(消息被包含在 Message 事件的 data 属性中)。这个过程中数据并不是被共享而是被复制。

只要运行在同源的父页面中,workers 可以依次生成新的 workers;并且可以使用 XMLHttpRequest 进行网络 I/O,但是 XMLHttpRequest 的 responseXML 和 channel 属性总会返回 null。

专用 worker

如前文所述,一个专用 worker 仅仅能被生成它的脚本所使用。这一部分将探讨 专用 worker 基础示例 (运行专用 worker) 中的 JavaScript 代码:将你输入的 2 个数字作乘法。输入的数字会发送给一个专用 worker,由专用 worker 作乘法后,再返回给页面进行展示。

共享 worker

一个共享 worker 可以被多个脚本使用——即使这些脚本正在被不同的 window、iframe 或者 worker 访问。这一部分,我们会讨论共享 worker 基础示例(运行共享 worker)中的 javascript 代码:该示例与专用 worker 基础示例非常相像,只是有 2 个可用函数被存放在不同脚本文件中:两数相乘函数,以及求平方函数。这两个脚本用同一个 worker 来完成实际需要的运算。

关于线程安全

Worker 接口会生成真正的操作系统级别的线程,如果你不太小心,那么并发会对你的代码产生有趣的影响。然而,对于 web worker 来说,与其他线程的通信点会被很小心的控制,这意味着你很难引起并发问题。你没有办法去访问非线程安全的组件或者是 DOM,此外你还需要通过序列化对象来与线程交互特定的数据。所以你要是不费点劲儿,还真搞不出错误来。

以上就是关于Web Workers是什么及Web Workers有什么用这方面的一些信息了 小编整理的这些讯息希望对童鞋们有所帮助


版权说明: 本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。


标签:

相关文章
致1人死亡 山西天润煤化集团德通煤业被停产整顿-世界时讯

致1人死亡 山西天润煤化集团德通煤业被停产整顿-

  记者3日从山西省应急管理厅获悉,因发生安全事故,山西天润煤化集团德通煤业有限公司被责令停产整顿。  2022年10月18日,山西天润煤化集更多

2022-11-03 17:57:52
煤炭行业新增25家国家知识产权示范企业和优势企业-世界资讯

煤炭行业新增25家国家知识产权示范企业和优势企业

  10月27日,国家知识产权局发布《关于确定2022年新一批及通过复核的国家知识产权示范企业和优势企业的通知》,煤炭行业2家企业(冀凯河北机更多

2022-11-03 16:34:09
1-9月新疆规上原煤产量29132.39万吨 同比增长31.1%

1-9月新疆规上原煤产量29132.39万吨 同比增长31.1%

  新疆统计局发布的数据显示,1-9月新疆规上工业原煤产量2913239万吨,同比增长311%,增速比上半年提高23个百分点。  哈密是疆煤外运主战更多

2022-11-03 10:16:23
蒙古乌兰巴托铁路煤炭出口收费标准上调-世界快看点

蒙古乌兰巴托铁路煤炭出口收费标准上调-世界快看

  从2022年11月1日开始,乌兰巴托铁路调整客运和出口货运价格和费用。即,将出口铜、锌精矿运输费用指数为20%,出口铁矿石运输费用指数15%,更多

2022-11-03 10:16:17
内蒙古通辽:全力保障电煤运输 满足民生需求-全球今日报

内蒙古通辽:全力保障电煤运输 满足民生需求-全

  长期以来,中国铁路沈阳局集团有限公司高度重视电煤运输工作,充分发挥运输骨干作用,坚持满足企业需求、应装尽装、重点保障、精准保供的更多

2022-11-03 09:52:06
贵州力推煤炭产业数字化转型-天天观速讯

贵州力推煤炭产业数字化转型-天天观速讯

  日前,贵州省能源局、贵州省发展改革委印发《贵州省煤炭工业发展十四五规划》(以下简称《规划》),重点提出加快煤矿智能发展,加大示范更多

2022-11-03 10:00:52
北方大部分地区供暖启动在即 今冬能源保供形势怎么样-环球关注

北方大部分地区供暖启动在即 今冬能源保供形势怎

  北风起,寒意浓。进入11月份,北方大部分地区供暖启动在即,今年冬天能源保供情况备受关注。当前,我国主要煤炭大省在煤炭稳产增长、能源更多

2022-11-03 10:02:38
2022年9月份福建省煤炭市场价格稳中上涨

2022年9月份福建省煤炭市场价格稳中上涨

  根据商务部重要生产资料监测系统数据显示,2022年9月份,福建省监测样本企业的煤炭市场价格平均为147824元吨,环比上涨13%。其中无烟煤市更多

2022-11-02 16:11:42
2022年9月份内蒙古煤炭价格小幅上涨

2022年9月份内蒙古煤炭价格小幅上涨

  2022年9月份受疫情防控、原油价格变化,农业生产进程和建筑工程进展等因素影响,煤炭价格小幅上涨。据内蒙古自治区商务厅生产资料市场监测更多

2022-11-02 15:56:17
钢铁行业2022年1-9月运行情况-世界热讯

钢铁行业2022年1-9月运行情况-世界热讯

  一、钢铁产量有所下降。据国家统计局数据,1-9月全国生铁、粗钢产量分别为656104万吨、780833万吨,分别同比下降25%、34%。  二、钢材进更多

2022-11-02 09:52:18