html5之web worker

Web Worker

Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用引入了对 Web Worker 的支持。Web Worker API 定义了一种在后台运行脚本的方法。 Web Worker 是在万维网联合会 (W3C) 的 Web Worker 规范中指定的。

从传统意义上来说,浏览器是单线程的,它们会强制应用程序中的所有脚本一起在单个 UI 线程中运行。虽然你可以通过使用文档对象模型 (DOM) 事件和setTimeout API 造成一种多个任务同时在运行的假象,但只需一个计算密集型任务就会使用户体验急转直下。

Web Worker API 为 Web 应用程序的创作人员提供了一种方法,用于生成与主页并行运行的后台脚本。你可以一次生成多个线程以用于长时间运行的任务。新的 worker 对象需要一个 .js 文件,该文件通过一个发给服务器的异步请求包含在内。

JavaScript
var myWorker = new Worker('worker.js');

往来于 worker 线程的所有通信都通过消息进行管理。主机 worker 和 worker 脚本可以通过 postMessage 发送消息并使用 onmessage 事件侦听响应。消息的内容作为事件的数据属性进行发送。

下面的示例创建一个 worker 线程并侦听消息。

JavaScript
var hello = new Worker('hello.js');
hello.onmessage = function(e) {alert(e.data);
};

worker 线程发送要显示的消息。

JavaScript
postMessage('Hello world!');

 

与 Web Worker 进行双向通信

要建立双向通信,主页和 worker 线程都要侦听 onmessage 事件。在以下示例中,Worker 线程在指定的延迟后返回消息。

首先,该脚本创建 worker 线程。

JavaScript
var echo = new Worker('echo.js'); 
echo.onmessage = function(e) {alert(e.data); 
}

消息文本和超时值在表单中进行指定。当用户单击提交按钮时,脚本会将两条信息以 JavaScript 对象文本的形式传递给 worker。为了防止页面在新的 HTTP 请求中提交表单值,事件处理程序还对事件对象调用 preventDefault。注:你不能将对 DOM 对象的引用发送给 worker 线程。Web Worker 并非可以访问所有数据。只允许访问 JavaScript 基元(例如 Object 或 String 值)。

HTML
<script>
window.onload = function() {var echoForm = document.getElementById('echoForm'); echoForm.addEventListener('submit', function(e) {echo.postMessage({message : e.target.message.value,timeout : e.target.timeout.value}); e.preventDefault();}, false); }
</script>
<form id="echoForm"><p>Echo the following message after a delay.</p><input type="text" name="message" value="Input message here."/><br/><input type="number" name="timeout" max="10" value="2"/> seconds.<br/><button type="submit">Send Message</button>
</form>

最后,worker 侦听消息,并在指定的超时间隔之后将其返回。

JavaScript
onmessage = function(e) 
{setTimeout(function() {postMessage(e.data.message);}, e.data.timeout * 1000);
}

 

在 Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用中,Web Worker API 支持以下方法。

方法描述

void close()

终止 worker 线程。

void importScripts(inDOMString... urls);

导入其他 JavaScript 文件的逗号分隔列表。

void postMessage(在任何数据中);

从 worker 线程发送消息或发送消息到 worker 线程。

 

Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用支持以下 Web Worker API 属性:

属性类型描述
locationWorkerLocation代表绝对 URL,包括protocolhostporthostnamepathnamesearch 和 hash 组件。
navigatorWorkerNavigator代表用户代理客户端的标识和 onLine 状态。
selfWorkerGlobalScopeWorker 范围,包括 WorkerLocation 和 WorkerNavigator 对象。

 

 

Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用支持以下 Web Worker API 事件:

事件描述

onerror

出现运行时错误。

onmessage

接收到消息数据。

 

WindowTimers

 

Web Worker API 还支持更新的 HTML5 WindowTimers 功能。

方法描述

void clearInterval(inlonghandle);

取消由句柄所确定的超时。

void clearTimeout(inlonghandle);

取消由句柄所确定的超时。

long setInterval(inanyhandler,inoptionalanytimeoutinany...args);

计划在指定的毫秒数之后重复运行的超时。注:你现在可以将其他参数直接传递到处理程序。如果处理程序是 DOMString,它被编译成 JavaScript。将句柄返回到超时。清除 clearInterval。

long setTimeout(inanyhandler,在可选的任何超时中,在任何... 参数中);

计划在指定的毫秒数之后运行的超时。注:你现在可以将其他参数直接传递到处理程序。如果处理程序是 DOMString,它被编译成 JavaScript。将句柄返回到超时。清除 clearTimeout。

 

在 IE10 Platform Preview 4 中对 Web Worker 的更新

Internet Explorer 10 Platform Preview Build 4 添加了每个进程 25 个 Web Worker 线程的限制。你可以在脚本中创建更多的 worker,但同时只有 25 个将处于活动状态。

如果达到最大线程数,创建 worker 将不会引发异常。调用总是成功,你可以添加处理程序并将消息发布给它。但是,在现有的 25 个线程之一变得可用之前,worker 可能不会启动。

JavaScript
// Coding pattern before IE10 Platform Preview Build 4
try {var worker = new Worker(url);
} catch(ex) {// IE might throw...?
}// After IE10 Platform Preview Build 4
var worker = new Worker(url);
// Continue with confidence...

 

转载于:https://www.cnblogs.com/dacuotecuo/p/4237810.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第4章 Python 数字图像处理(DIP) - 频率域滤波9 - 频率域滤波基础、频率域的滤波过程、低通、高通

目录频率域滤波基础频率域的其他特性频率域滤波基础知识频率域滤波步骤小结空间域和频率域滤波之间的对应关系频率域滤波基础 频率域的其他特性 频率域中的滤波过程如下&#xff1a; 首先修改傅里叶变换以在到特定目的然后计算IDFT&#xff0c;返回到空间域 # 频率域中的其…

C# :试玩EventLog

1. 专门创建Source的Log   创建了Source&#xff0c;log显示在 Event viewer/Applications and Services logs/ 自定义Source 中&#xff0c;待遇比较高&#xff0c;专门显示的。 创建Source需要管理员身份&#xff0c;否则Crash。 如果已经打开了 Computer Management,请关闭…

css 宋体_Java前端基础(一)之html/css

1.1 htmlHTML:超文本标记语言(Hyper Text Markup Language)&#xff0c;标准通用标记语言下的一个应用。HTML 不是一种编程语言&#xff0c;而是一种标记语言 (markup language)&#xff0c;是网页制作所必备的WEB开发工具&#xff1a;hbuilder/webstorm/vs code/eclpise最简单…

View Controller Programming Guide for iOS---(七)---Resizing the View Controller’s Views

Resizing the View Controller’s Views A view controller owns its own view and manages the view’s contents. In the process, the view controller also manages the view’s subviews. But in most cases, the view’s frame is not set directly by the view controll…

基于百度地图js进行地理定位

http://www.mengxiangchaoren.com/jquery.select.position.min.js 使用方法 $("#myCity").renderSelect({posByGps:true,bdAk:BD_AK});转载于:https://www.cnblogs.com/Brose/p/jquery_select_position.html

C#接口-接口作用

C#接口是一个让很多初学C#者容易迷糊的东西&#xff0c;用起来好像很简单&#xff0c;定义接口&#xff0c;里面包含方法&#xff0c;但没有方法具体实现的代码&#xff0c;然后在继承该接口的类里面要实现接口的所有方法的代码&#xff0c;但没有真正认识到接口的作用的时候就…

gpio的8种工作模式_Stm32之GPIO工作模式简介

GPIO的8种工作模式GPIO初始化结构体的时候&#xff0c;必须要配置合适的工作模式&#xff0c;这样才能使得IO口发挥应有的作用。工作模式大体上共分为输入输出两类&#xff0c;共8种&#xff0c;下面将介绍这8种工作模式。GPIO工作模式输入模式GPIO_Mode_AIN 模拟输入 GPIO_Mod…

vagrant,流浪汉,我又来啦。

最近学个DEVOPS2.0&#xff0c;讲微服务&#xff0c;容器华&#xff0c;持续部署&#xff0c;很到位&#xff0c;就一个一个工具撸一撸。。。 vagrant&#xff0c;以前接触过&#xff0c;所以上手快&#xff0c;&#xff0c;哈哈&#xff0c;&#xff0c;用时再具体配置。 virt…

dedecms最新版本修改任意管理员漏洞

此漏洞无视gpc转义&#xff0c;过80sec注入防御。 补充下&#xff0c;不用担心后台找不到。这只是一个demo&#xff0c;都能修改任意数据库了&#xff0c;还怕拿不到SHELL&#xff1f; 起因是全局变量$GLOBALS可以被任意修改&#xff0c;随便看了下&#xff0c;漏洞一堆&#x…

第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

目录使用低通频率域滤波器平滑图像理想低通滤波器(ILPF)高斯低通滤波器(GLPF)巴特沃斯低通滤波器低通滤波的例子使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心的一个圆内无衰减地通过所有频率&#xff0c;而在这个圆外“截止”所有的频率的二维低通滤波…

vs2008中combox用法总结

1、判断是否为空 m_CheckPoint.GetCurSel()-1; 2、清空 m_CheckPoint.ResetContent(); 3、添加 m_CheckPoint.AddString(str); 4、获取某一索引的值 m_CheckPoint.GetLBText(j,str1);//j为索引&#xff0c;str1为存储变量 5、删除某一索引的值 m_CheckPoint.DeleteString(j);//…

bluecam连接步骤说明_厂家详解旋片式真空泵使用说明

旋片式真空泵是有区分单双极高速直联结构的真空泵&#xff0c;是用来对密封容器抽除气体的基本设备之一。旋片式真空泵的泵与电机连轴&#xff0c;有着高转速、外型小、结构紧凑、流动性工作方便的优点。本文所使用旋片式真空泵使用说明资料&#xff0c;是台冠真空泵技术团队工…

python函数中可变参数的传递方式是_Python函数可变参数定义及其参数传递方式实例详解...

本文实例讲述了Python函数可变参数定义及其参数传递方式。分享给大家供大家参考。具体分析如下&#xff1a; python中 函数不定参数的定义形式如下&#xff1a; 1、func(*args) 传入的参数为以元组形式存在args中&#xff0c;如&#xff1a; def func(*args): print args >&…

加载中做法

一个网页在加载时&#xff0c;可给静态部分加个加载中&#xff0c;而动态部分也即是真正内容用jq来改&#xff0c;这样就有那个效果了转载于:https://www.cnblogs.com/yedeying/p/3618815.html

Junit4常用注解

Junit4注解 JUnit4的测试类不用再继承TestCase类了。使用注解会方便很多。 Before&#xff1a;初始化方法After&#xff1a;释放资源Test&#xff1a;测试方法&#xff0c;在这里可以测试期望异常和超时时间Ignore&#xff1a;忽略的测试方法BeforeClass&#xff1a;针对所有测…

第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像

目录使用高通滤波器锐化图像由低通滤波器得到理想、高斯和巴特沃斯高通滤波器指纹增强频域中的拉普拉斯钝化掩蔽、高提升滤波和高频强调滤波同态滤波使用高通滤波器锐化图像 由低通滤波器得到理想、高斯和巴特沃斯高通滤波器 HHP(u,v)1−HLP(u,v)(4.118)H_{HP}(u, v) 1 - H_{…

值类型 引用类型 堆栈 堆 之 异想

看了很多值类型 和 引用类型的文章&#xff08;谷歌能搜索出来的&#xff09;看了越多疑问越大&#xff0c;而这些资料中没有具体的说明。问题&#xff1a;1、堆栈 和 堆 分别存于计算机的哪个硬件&#xff08;CPU缓存&#xff0c;内存&#xff0c;硬盘&#xff09;&#xff1f…

漫步者lollipods如何调节音量_漫步者MF5扩音器体验:老师值得入手

对于教师职业来说&#xff0c;保护好嗓子是很重要的。每天为学生操劳&#xff0c;频繁的讲课&#xff0c;很多老师都遇上了喉咙沙哑的问题。怎么样才能保护好老师的嗓子呢&#xff1f;“小蜜蜂”是很多老师们的选择&#xff0c;这种扩音器可以挂在腰间&#xff0c;通过麦克风&a…

数据库之间数据转换最快方法

用txt导入的方式是最快的&#xff0c;一般是秒级。 以ACCESS数据库到SQLite数据库为例&#xff1a; 第一步&#xff1a;导出ACCESS数据库到txt文件&#xff1a; 一、将表中数据导出到文本文件&#xff08;TXT&#xff09;&#xff1a; Select * INTO [TEXT;DATABASEE:\TEMP].TE…

pandas删除某列有空值的行_Python-零基础学习Pandas知识点整理(2)

DataFrame数据的清洗--预处理操作import pandas as pdimport numpy as np#DataFrame数据框行或列的删除#df.drop(labelsNone,axis0,indexNone,columnsNone,levelNone,inplaceFalse,error"raise")#labels 表示需要删除的行或列的标签&#xff0c;多行或多列用列表传入…