本文主要是介绍解决浏览器切换其它窗口最小化定时器失效方案:多线程webWorker,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
业务场景
一个考试系统,需要在用户切换窗口或者最小化的时候依然保持倒计时正常进行
技术
webWorker多线程
工具代码
function create(f) {var blob = new Blob(['(' + f +')()']);var url = window.URL.createObjectURL(blob);var worker = new Worker(url);return worker;
}export const createWorker = (callback, time) => {var pollingWorker = create(`function (e) {setInterval(function () {this.postMessage(null)}, ${time})}`);pollingWorker.onmessage = callbackreturn pollingWorker;
}export const stopWorker = (vm) => {try {vm&&vm.terminate()} catch (err) {console.log(err)}
}
用法
// 引入
import {createWorker, stopWorker} from '...'
// 创建
const worker = createWorker(() => {//做要做的事
}, 1000)
// 清除
/*
* worker的值还在这个不同于定时器
*/
stopWorker(worker)
这篇关于解决浏览器切换其它窗口最小化定时器失效方案:多线程webWorker的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!