<!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被觸發