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

时间:2018-04-16 03:49:57

标签: vuejs2 laravel-5.6

标题几乎可以解释它,但我希望每秒都能触发一个功能。

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

我做了一些谷歌搜索,到目前为止,任何例子都很高兴。

另外,我正在使用laravel 5.6

这不适用于调用 countDown()方法

export default {
    ready() {
        window.setInterval(() => {
            this.countDown();
        },1000);
    },

5 个答案:

答案 0 :(得分:9)

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

mounted: function () {
        this.$nextTick(function () {
            window.setInterval(() => {
                this.countDown();
            },1000);
        })
    }

答案 1 :(得分:4)

上面给出的答案每秒触发一次(由于$ nextTick的原因),因此,如果要设置其他时间间隔,只需删除$ nextTick(我必须每30秒触发一次)

mounted: function () {
  window.setInterval(() => {
    this.getNotifications()
  }, 30000)
}

答案 2 :(得分:1)

只需组合解决方案(因为我无法编辑),下面的代码即可工作。一个陷阱是,您还希望一旦视图被销毁就停止工作,因此,当调用beforeDestroy钩子时,您希望将其清除

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

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

beforeDestroy() {
  clearInterval(this.timer)
}

答案 3 :(得分:1)

这最有效,因为它可以确保在组件销毁之前清除间隔,而无需在数据中定义任何内容。

created: function() {
  const timer = setInterval(() => {
    this.countDown();
  }, 1000);

  this.$once("hook:beforeDestroy", () => {
    clearInterval(timer);
  });
} 

答案 4 :(得分:0)

检查一下。这对我有用。

created() {
    this.interval = setInterval(() => this.getNotifications(), 3000);
}