javascript - 如何在Vue中特定组件的范围内定义`setInterval`?
问题描述
我想setInterval
只在特定组件的范围内运行(仅限于该组件而不是整个应用程序),因为我正在使用 Quasar 框架的 SPA 模式。
当我设置此功能时,即使我更改了页面的 URL,它也会导致到处运行。另外,我检查了这个链接(如何在 Vue 组件中使用 setInterval),但这不是我的答案。
我的示例代码:
methods:
testInterval: function () {
setInterval(() => this.playCMD(), 2000)
},
playCMD: function () {
// Do something
console.log('Do something')
}
另外,当我们通过 SPA 模式使用它时,最好说我想限制在 VueJs 中的特定范围内做某事,而不是在整个应用程序中。
解决方案
我没有使用过 Quasar 框架,但您可以尝试以下选项:
- 订阅Vue 生命周期'destroyed' 事件,然后执行 clearTimeout。
或者
如果您使用的是 Vue-Router,则可以使用In-Component Guards,它们是您导航到另一个组件时的事件,您可以使用它来执行 clearTimeout。
data: () => { return { timer: null }; }, methods: { testInterval() { this.timer = setInterval(this.playCMD, 2000) } }, beforeRouteLeave (to, from, next) { if(this.timer) clearInterval(this.timer); next(); }
编辑:谢谢@Ali Hallaji。您必须添加对下一个函数的调用才能继续通过管道,如此处所述。
推荐阅读
- python - 如何将全年每天 3 小时的数据导入 xarray
- elasticsearch - 使用 Elastic RestHighLevelClient 批量请求时出现 ConnectionClosedException
- java - 如何将局部变量提取到 IntelliJ 中的类变量?
- error-handling - 如何在骡子中处理“无法得到任何回应”?
- php - 无法在我的 Mac 中卸载或取消链接 php
- ionic4 - Ionic 4 无法在 ngFor 中显示数据
- mongodb - “$push 使用了太多内存,无法溢出到磁盘。内存限制:104857600 字节”
- javascript - 已添加类,但随后立即删除
- cas - CAS 6.2.0-RC1 无法验证 LDAP 用户
- c# - C# MVC - 无法使用 webClient 从服务器 WebAPI url 检索 JSON 数据