(原)Html5之WebWorker Api詳解(網頁中多線程)

 

 

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

發佈了12 篇原創文章 · 獲贊 1 · 訪問量 2534
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章