當咱們解析一個很大的JSON字符串的時候,若是須要500ms才能解析完,這個時候就會影響用戶體驗,在這段時間內什麼也作不了,這個時候webWorker是最理想的解決辦法web
// 建立一個新的線程
let worker = new Worker('worker.js');
let children = {}
// 請求數據
let xml = new XMLHttpRequest();
xml.open('get', 'tsconfig.json');
xml.onreadystatechange = function() {
if(xml.readyState === 4 && xml.status === 200){
children = xml.responseText;
// 傳給webWorker,讓他進行處理
worker.postMessage(children)
}
}
xml.send()
// 拿到worker的結果,進行接下來的操做
worker.onmessage = function (event) {
let children = event.data;
for(let item in children) {
let p = document.createElement('p');
p.innerHTML = children[item].id;
document.body.appendChild(p)
}
}
複製代碼
self.onmessage = function(event) {
// 獲得傳過來的值進行處理
let data = event.data;
... // 處理信息
// 把處理好的內容傳遞給主線程
self.postMessage(data)
}
複製代碼