使用setTimeout调用方法的Vue.js无法正常工作

时间:2017-10-17 18:26:46

标签: vue.js vuejs2 settimeout

我有一个非常基本的Vue组件,我希望在setTimeout内递归调用一个方法。

mounted生命周期调用方法(一次)按预期工作。 但后来调用自己总是给出Uncaught TypeError: ... is not a function



new Vue({
  el: '#app',
  mounted() {
    this.check();
  },
  methods: {
    check: () => {
      console.log('Checking');
      
      // error: self.check is not a function
      let self = this;
      setTimeout(function() {
        self.check();
      }, 500);

      // error: this.check is not a function
      setTimeout(function() {
        this.check();
      }.bind(this), 500);

      // does nothing
      setTimeout(this.check, 500);

      // error: this.check is not a function
      setTimeout(() => {
        this.check();
      }, 500);
    },
  }
})

<script src="https://unpkg.com/vue"></script>
<div id="app"></div>
&#13;
&#13;
&#13;

0 个答案:

没有答案