加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

HTML5之web workers_动力节点Java学院整理

发布时间:2020-03-15 18:41:11 所属栏目:编程 来源:站长网
导读:副问题#e# 专用 Web Worker (Dedicated Web Worker) 提供了一个简朴的要领使得 web 内容可以或许在靠山运行剧本。一旦 worker 建设后,它可以向由它的建设者指定的变乱监听函数转达动静,这样该 worker 天生的全部使命就城市吸取到这些动静。worker 线程可以或许在

赏识器将列出的剧本加载并运行。每个剧本中的全局工具都可以或许被 worker 行使。假如剧本无法加载,将抛出NETWORK_ERROR非常,接下来的代码也无法执行。而之前执行的代码(包罗行使window.setTimeout()耽误执行的代码)却依然可以或许行使。importScripts()之后的函数声明依然可以或许行使,由于它们始终会在其他代码之前运行。留意:剧本的下载次序不牢靠,但执行时会凭证你将文件名传入到importScripts()中的次序。这是同步完成的;直到全部剧本都下载并运行完毕,importScripts()才会返回。

例子

本节提供了几个怎样行使 DOM worker 的例子。

在靠山执行运算

worker 的一个上风在于可以或许执行处理赏罚器麋集型的运算而不会阻塞 UI 线程。在下面的例子中,worker 用于计较斐波那契数。

JavaScript 代码

下面的 JavaScript 代码生涯在「fibonacci.js」文件中,与下一节的 HTML 文件关联。

var results = []; function resultReceiver(event) { results.push(parseInt(event.data)); if (results.length == 2) { postMessage(results[0] + results[1]); } } function errorReceiver(event) { throw event.data; } onmessage = function(event) { var n = parseInt(event.data); if (n == 0 || n == 1) { postMessage(n); return; } for (var i = 1; i <= 2; i++) { var worker = new Worker("fibonacci.js"); worker.onmessage = resultReceiver; worker.onerror = errorReceiver; worker.postMessage(n - i); } };

worker 将属性onmessage配置为一个函数,当 worker 工具挪用postMessage() 时该函数会吸取到发送过来的信息。(留意,这么行使并不等同于界说一个同名的全局变量,或是界说一个同名的函数。var onmessage与function onmessage将会界说与该名字沟通的全局属性,可是它们不会注册可以或许吸取从建设 worker 的网页发送过来的动静的函数。) 这会启用递归,生本钱身的新拷贝来处理赏罚计较的每一个轮回。

HTML 代码

<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Test threads fibonacci</title> </head> <body> <div id="result"></div> <script language="javascript"> var worker = new Worker("fibonacci.js"); worker.onmessage = function(event) { document.getElementById("result").textContent = event.data; dump("Got: " + event.data + "n"); }; worker.onerror = function(error) { dump("Worker error: " + error.message + "n"); throw error; }; worker.postMessage("5"); </script> </body> </html>

网页建设了一个div元素,ID 为result, 用它来表现运算功效,然后天生 worker。在天生 worker 后,onmessage处理赏罚函数设置为通过配置div元素的内容来表现运算功效,然后onerror处理赏罚函数被配置为转储错误信息。最后,向 worker 发送一条信息来启动它。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读