六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 124|回复: 0

(原)Html5之WebWorker Api详解(网页中多线程)

[复制链接]

升级  20%

20

主题

20

主题

20

主题

秀才

Rank: 2

积分
80
 楼主| 发表于 2013-1-24 06:48:35 | 显示全部楼层 |阅读模式
 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><script type="text/javascript">window.onload = function() {var worker = new Worker("render-task.js");worker.onmessage = function(event) {alert(eval(event.data).result);};worker.postMessage('({content: "Test", command: ' + writeMessage + '})');};function writeMessage() {var count = 0;while(count <= 9999999) {count++;}count++;return count; }</script></head><body></body></html> 
 
接下来插入线程文件:
 
onmessage = function(event) {var message = eval(event.data);message.text = "Response";var result = message.command();postMessage('({text: "Response", result:' + result + '})');}; 根据测试:
1:线程文件中不可以使用document等BOM
2:线程文件中不可以使用调用地点的外部变量。
3:线程文件中可以调用调用地点的函数。但是必须通过json传递过来
4:线程文件中不可以有挂起的操作命令(alert等)
 
基本的数据调用传递流程
 
work.postMessage->线程的onmessage被触发
线程的onmessage文件内调用postMessage->work.onmessage被触发
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表