Vue JS每x秒触发一次方法/函数

The*_*Guy 10 vuejs2 laravel-5.6

标题几乎可以解释它,但是我希望每秒触发一个函数。

我没有尝试过任何东西,也没有太多有用的代码。

我已经进行了一些谷歌搜索,到目前为止,我对任何示例都不满意。

另外,我正在使用laravel 5.6

这对于调用countDown()方法不起作用

export default {
    ready() {
        window.setInterval(() => {
            this.countDown();
        },1000);
    },
Run Code Online (Sandbox Code Playgroud)

And*_*aul 15

上面发布的答案每秒触发一次(因为 $nextTick),因此如果您想设置不同的间隔,只需删除 $nextTick(在我的情况下,我将其设置为 30000,因为我必须每 30 秒触发一次)

mounted: function () {
  window.setInterval(() => {
    this.getNotifications()
  }, 30000)
}
Run Code Online (Sandbox Code Playgroud)


gia*_*tas 10

只是为了结合解决方案(因为我无法编辑),下面的代码有效。一个问题是,一旦视图被销毁,您还希望作业停止,因此您需要在beforeDestroy调用钩子时清除它

mounted: function () {
  this.timer = setInterval(() => {
    this.countDown()
  }, 1000)
},

data() {
  return {
    timer: null
  }
},

beforeDestroy() {
  clearInterval(this.timer)
}
Run Code Online (Sandbox Code Playgroud)

  • 对于 Vue3,使用 `beforeUnmount` 钩子而不是 `beforeDestroy` (3认同)

The*_*Guy 9

谢谢大家,我找到了解决方案,只是在Google中提出了一些正确的问题:)

mounted: function () {
        this.$nextTick(function () {
            window.setInterval(() => {
                this.countDown();
            },1000);
        })
    }
Run Code Online (Sandbox Code Playgroud)