<!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被触发