前端开启多线程 Web Worker
Web Worker为Web内容在后台线程中运行脚本提供了一种简单的方法。线程可以执行任务而不干扰用户界面
- Worker必须在服务器才能用Worker的api
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><!-- first: -->first:<input type="text" id="first"></br>second:<input type="text" id="second"><script>const myWorker = new Worker('./work.js')const first = document.querySelector('#first')const second = document.querySelector('#second')first.onchange = function () {myWorker.postMessage([first.value, second.value]);console.log('first:Message posted to worker');}second.onchange = function () {myWorker.postMessage([first.value, second.value]);console.log('second:Message posted to worker');}myWorker.onmessage=function(e){console.log("回传主线程的内容"+e.data)}</script></body></html>
work.js
onmessage = function (e) {console.log('Message received from main script');var workerResult = 'Result: ' + (e.data[0] * e.data[1]);console.log('Posting message back to main script');postMessage(workerResult);//close() 终止线程}
终止Worker
myWorker.terminate();在worker线程中,workers 也可以调用自己的 close 方法进行关闭close()
