2013-12-10 69 views

回答

2

他們是孤立的,他們沒有與主頁面的JavaScript共享相同的JavaScript全局執行上下文。他們可以與頁面的主要(UI)JavaScript進行交互的唯一方式是發送和接收消息(postMessage和相關的message事件)。

這裏是表明勞動者具有不同的全球環境下運轉的一個實例:

page.html

<!doctype html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Isolated Worker</title> 
</head> 
<body> 
<script> 
// A global variable 
var answer = 42; 
(function() { 

    // We see answer 
    display("UI: typeof answer = " + typeof answer); 

    // Worker doesn't 
    var worker = new Worker("worker.js"); 
    worker.onmessage = function(e) { 
     display(e.data); 
    }; 

    function display(msg) { 
     var p = document.createElement('p'); 
     p.innerHTML = String(msg); 
     document.body.appendChild(p); 
    } 
})(); 
</script> 
</body> 
</html> 

worker.js

this.postMessage("Worker: typeof answer = " + typeof answer); 

輸出:

UI: typeof answer = number 
Worker: typeof answer = undefined

正如你所看到的,工作人員看不到主頁的全局變量;他們處於不同的全局執行環境中。

+0

非常感謝 – wordpressm