html5 Worker学习

HTML:


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>HTML5 线程交互例子</title>
<script type="text/javascript" src="mainthread.js"> </script>
</head>
<body>
<input type="text" id="inputedInteger" />
<input type="button" value="点击让主线程把这个数值发送给后台线程1" onclick="html5Worker()" /> <p id="result"></p> </body> </html>

mainthread.JS


function html5Worker() {

//判断浏览器是否支持
if (typeof (Worker) == "undefined") {
console.log("对不起你的浏览器不支持worker");
return;
}

//创建web worker实例
var worker1 = new Worker("thread1.js");

var integerInput = document.getElementById("inputedInteger").value;
var num = parseInt(integerInput, 10);

//跨文档消息传输Cross Document Messaging。
//postMessage发送消息给thread1
worker1.postMessage(num + "我是主线程的值我将发送给thread1 ");

//onmessage事件监听器
//当 web worker 传递消息时,会执行事件监听器中的代码。event.data 中存有来自 event.data 的数据。
worker1.onmessage = function (event) {

//取得从后台线程1(thread1)信息
var data = event.data;

var worker2 = new Worker("thread2.js");

worker2.postMessage(data + " 我是主线程的值我将发送给thread2");

worker2.onmessage = function (event) {
document.getElementById("result").innerHTML = event.data;
}
};
}

thread1.js


onmessage = function (event) {

var result = event.data + " 我是thread1接收的值我将返回 ";

console.log("thread1");

//把这个requst发送回主线程 (也就是创建这个worker1的线程)
postMessage(result);
}

thread2.js


onmessage = function(event) {

// 获取从主线程传来的数据
var result = event.data + " 我是thread2接收的值我将返回";

console.log("thread2");

//把这个result发送回主线程 (也就是创建这个worker2的线程)
postMessage(result);

}

运行结果:

注意的是要发布到服务器才能运行否则出现:

Uncaught SecurityError: Failed to construct ‘Worker‘: Script at ‘xxxxthread1.js‘ cannot be accessed from origin
‘null‘.

总结 :

1:创建worker实例并传递对应的js文件

2:发送消息  postMessage()

3:监听消息 onmessage

4:停止terminate()方法

5:onerror错误异常

监听消息也可以用下列方式.

        //google 或者ie方式注册事件
if (typeof window.addEventListener != ‘undefined‘) {
window.addEventListener(‘message‘, messageChange, false);
} else if (typeof window.attachEvent != ‘undefined‘) {
window.attachEvent(‘onmessage‘, messageChange);
}

html5 Worker学习

时间: 2024-10-05 15:36:18

html5 Worker学习的相关文章

HTML5+Bootstrap 学习笔记 4

HTML5 <map> <area> 标签 <map> 标签定义客户端的图像映射.图像映射是带有可点击区域的图像. <area> 标签定义图像映射内部的区域(图像映射指的是带有可点击区域的图像). area 元素始终嵌套在 <map> 标签内部. 1 <img src ="planets.gif" alt="Planets" usemap ="#planetmap" /> 2

html5 canvas 学习笔记(一)

一.canvas元素API canvas元素并未提供很多API,实际上他只提供了两个属性与三个方法: 1.canvas元素属性 width 属性:与 height 属性: canvas元素绘图表面的宽度,在默认状况下,浏览器会将canvas元素大小设定成与绘图表面大小一致,然而如果在css中覆写了元素大小,那么浏览器则会将绘图表面进行缩放,使之符合元素尺寸.其值为非负整数,默认值为300. 2.canvas元素方法 getContext()方法: 返回与该canvas元素相关的绘图环境对象,每个

PHP语言学习之html5的学习,一周总结

通过这周的html5的学习我整理了一下一些东西和一些总结 写代码的时候也开头都要对齐这样开起来很舒服,这些都是用到缩进键搞定的,比如<html></html>在一块写,要前后对齐,这样容易发现错误,而且看起来比较清晰 写代码是还有英文和中文的标点符号的问题,这些都要是注意的,(这基本是我在学习的时候遇到的问题) 要掌握好重要的标签,这样能够更好的学习.... 开始学习html 5 什么是html5HTML是由W3C的维护的 HTML是大小写不敏感的,HTML与html是一样的 HT

[HTML5 Canvas学习]使用颜色和透明度

在canvas中使用颜色和透明度,通过context的strokeStyle和fillStyle属性设置,strokeStyle和fillStyle的值可以是任意有效的css颜色字串.可以用RGB.RGBA.HSL.HSLA以及十六进制RGB标注来指定颜色,也可以通过 "yellow"."silver"."teal"这样的颜色名称来指定.除此之外,还可以使用SVG1.0规范中的颜色名称,比如"goldenrod"."

[HTML5 Canvas学习]绘制矩形

1.使用strokeRect和fillRect方法绘制矩形 a.strokeRect是绘制一个不填充的矩形 b.fillRect是绘制一个填充的矩形 代码: <script> var canvas = document.getElementById('canvas'), context = canvas.getContext('2d'); context.lineJoin = 'round'; context.lineWidth = 20; context.strokeRect(10, 10,

数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇

<数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇>一文让读者了解了 HT的 2D 拓扑图组件使用,本文将对 HT 的 3D 功能做个综合性的介绍,以便初学者可快速上手使用 HT 构建例如电信网管 3D 机房应用.水务燃气 SCADA 监控应用及智能楼宇等应用场景. HT for Web 的 3D 是完全基于 WebGL 技术实现的渲染引擎,但开发者几乎不需要了解 3D 图形数学或 Shader 渲染的底层技术,只需要掌握基本的 3D 坐标系和相机  Camera 的概念,剩下需要掌

HTML5 例子学习 HT 图形组件

HTML5 例子学习 HT 图形组件 HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打磨,如今 HT 算是达到了这样的效果,谈不上用尽洪荒之力,但我们对产品结果很满意,特别是 HT 的用户手册,将例子和文档无缝融合一体,小小 10 来兆开发包居然包含了四十五份手册,数百个活生生的 HTML5 例子,还没体验过的同学可以点击 http://www.

数百个 HTML5 例子学习 HT 图形组件 – 拓扑图篇

HT 是啥:Everything you need to create cutting-edge 2D and 3D visualization. 这口号是当年心目中的产品方向,接着就朝这个方向慢慢打磨,如今 HT 算是达到了这样的效果,谈不上用尽洪荒之力,但我们对产品结果很满意,特别是 HT 的用户手册,将例子和文档无缝融合一体,小小 10 来兆开发包居然包含了四十五份手册,数百个活生生的 HTML5 例子,还没体验过的同学可以点击 http://www.hightopo.com/guide/

数百个 HTML5 例子学习 HT 图形组件 – 3D 建模篇

http://www.hightopo.com/demo/pipeline/index.html <数百个 HTML5 例子学习 HT 图形组件 – WebGL 3D 篇>里提到 HT 很多情况下不需要借助 3Ds Max 和 Blender 等专业 3D 建模工具也能做出很多效果,例如  http://www.hightopo.com/guide/guide/core/3d/examples/example_3droom.html 这个 3D 电信机房监控例子整个都是通过 HT 提供的 AP