网站首页 前沿科技 > 正文
今天来说一下关于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有什么用这方面的一些信息了 小编整理的这些讯息希望对童鞋们有所帮助
版权说明: 本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
猜你喜欢:
- 2021-07-22 科技要闻:华为P30 Pro相机参数与之前的爆料基本相同
- 2021-06-13 科技资讯:手机淘宝知识科普:淘宝上应该怎么开店
- 2021-07-12 科技要闻:T-Mobile的新5G手机已做好合并准备
- 2021-06-10 科技资讯:最便宜的Galaxy Note 10仍然有两个令人惊讶的优点
- 2021-05-25 科技资讯:爱宝盆如何跨行取现免费还随带解决以下疑难杂症
- 2021-05-28 科技资讯:北京支持民营经济20条落地实施
- 2021-07-29 科技要闻:根据Bungie的说法 命运3新闻将不会出现一段时间
- 2021-03-17 玉兔二号巡视器已完成第五月昼的科学探测工作
最新文章:
- 2022-07-29 艺术表现手法有哪些(艺术的表现手法)
- 2022-07-29 鹊组词和拼音(鹊怎么组词)
- 2022-07-29 雨林木风ghost win7 sp1 装机旗舰版(雨林木风 ghost xp sp3 装机版 yn9 9)
- 2022-07-29 澄海3c晨曦直播(澄海3c架势)
- 2022-07-29 鼠式坦克模型(鼠式坦克)
- 2022-07-29 郑少秋在哪部电视剧中饰演赌神(郑少秋饰演赌神的电视剧名叫什么)
- 2022-07-29 九的部首是什么(九字的偏旁部首是什么)
- 热点推荐
-
- 说一说Web Workers是什么及Web Workers有什么用
- 三星 Note 10 Lite 2 月推出定价估计 $4698
- WeChat 解除 三星 S10 / Note 10 指纹锁功能
- 三星 Galaxy Fold 已经有 11 月更新推出
- 三星 Galaxy Fold 二号机连代号都有,叫「Bloom」
- 三星 Galaxy S11 的 5 倍光学变焦无走鸡,连官方介绍片都有
- 三星 Galaxy Fold 正式推出售价 $15998
- 三星 Note 10 试行推出 Android 10 更新中
- 三星 Galaxy M10s 规格传闻是 6.4 吋 4000mAh 大电池
- 三星 A90 与 A70,相同外观不同内涵
- 热评文章
- 随机文章
-
- 多元的量身定制的平台旅行内容 可为旅行者提供遍及五个大都市的内部轨道
- 科技要闻:三星Galaxy Fold 2有望配备更大的外部显示屏但不支持S Pen
- 科技要闻:DoodleDraw是FacebookMessenger中的第一个可玩游戏
- 科技资讯:挪威10月份经济再次出现 令人印象深刻
- 科技要闻:三星将于今天晚上举办旗舰新品中国线上发布会
- 三星 M51 已获认证,估计快将推出
- 科技要闻:GooglePlay用老师批准的儿童标签代替了家庭应用
- 科技资讯:三星Galaxy Note 20和Galaxy Z Flip 5G的配色选择在发布前泄露
- 科技资讯:iphonex全屏玩王者荣耀要怎么弄
- 科技要闻:如果您选择Android则智能手机的选择范围可能会更广