什么是 Web Worker?
当在 HTML 页面中执行脚本时,页面的状态是不可响应的,直到脚本已完成。
web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。
简单demo:
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input type="text" id="input1">
<input type="text" id="input2">
<div id="app"></div>
</body>
<script>
let input1 = document.getElementById('input1')
let input2 = document.getElementById('input2')
let app = document.getElementById('app')
if (window.Worker) {
let myWorker = new Worker('./Workers.js')
input1.addEventListener('change', (e) => {
myWorker.postMessage([input1.value, input2.value])
})
input2.addEventListener('change', (e) => {
myWorker.postMessage([input1.value, input2.value])
})
myWorker.onmessage = (e)=>{
app.innerHTML = e.data
}
}
</script>
</html>
Workers.js
onmessage = function (e) {
console.log(e)
let result = e.data[0] * e.data[1];
if (isNaN(result)) {
postMessage('Please write two numbers');
} else {
let workerResult = 'Result: ' + result;
postMessage(workerResult);
}
}
阮一峰老师详细教程:www.ruanyifeng.com/blog/2018/0… 举个实际可用的例子: