轻松使用WebWorker,解放耗时较大的算法代码
基础知识
常规用法
main.js
var first = document.querySelector('#number1');
var second = document.querySelector('#number2');
var result = document.querySelector('.result');
if (window.Worker) { // Check if Browser supports the Worker api.
// Requires script name as input
var myWorker = new Worker("worker.js");
// onkeyup could be used instead of onchange if you wanted to update the answer every time
// an entered value is changed, and you don't want to have to unfocus the field to update its .value
first.onchange = function() {
myWorker.postMessage([first.value,second.value]); // Sending message as an array to the worker
console.log('Message posted to worker');
};
second.onchange = function() {
myWorker.postMessage([first.value,second.value]);
console.log('Message posted to worker');
};
myWorker.onmessage = function(e) {
result.textContent = e.data;
console.log('Message received from worker');
};
}worker.js
巧妙用法
WebWorker类
math.js: 耗时大,且会阻塞线程影响浏览器渲染的方法
worker.js: 一个专用worker仅仅能被生成它的脚本所使用。
main.js: 引入到页面,初始化WebWorker
使用注意:
最后更新于