vue 浏览器chrome最小化,切换标签后时钟setInterval不执行的解决办法
vue
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
项目地址:https://gitcode.com/gh_mirrors/vu/vue
免费下载资源
·
- 在项目
public
目录下创建文件worker.js
内容为:
// worker.js
function startTimer(data = {}) {
setInterval(() => {
postMessage(data.message || 'interval');
}, data.time || 1000);
}
onmessage = function (event) {
startTimer(event.data);
};
- 在需要使用的地方
data() {
return {
worker: null,
}
},
// 关闭页面时记得进行销毁
beforeDestroy() {
this.worker && this.worker.terminate()
},
methods: {
// 使用worker封装loop
loop(cb) {
// 创建 Web Worker
// 这里的路径需要使用url路径(放在public文件夹内),确保可以访问
const worker = new Worker(`${env.publicPath}/worker.js`)
this.worker = worker
// 向 Web Worker 发送消息
// time定时器时间,message为唯一标志
worker.postMessage({ time: 1000, message: 'time' })
// 监听来自 Web Worker 的消息
worker.onmessage = function(event) {
if (event.data === 'time') {
cb()
}
}
},
// 测试代码
test(){
// 在需要使用的地方
this.loop(() => {
console.log('now', new Date().getTime())
}
}
}
GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5
* chore: fix link broken
Signed-off-by: snoppy <michaleli@foxmail.com>
* Update packages/template-compiler/README.md [skip ci]
---------
Signed-off-by: snoppy <michaleli@foxmail.com>
Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891
Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
更多推荐
已为社区贡献2条内容
所有评论(0)