js定时器中如何调用函数?

发布于 2022-09-11 22:30:04 字数 335 浏览 22 评论 0

export default {
      methods: {
          //方法1
          a(){
              setInterval(function () {
                  this.b();  //---不执行报错:this.b() is not a function---
              },1000)
          },
          //方法2
          b(){
              console.log('调用成功')
          }
      }
}

如何解决?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

隔纱相望 2022-09-18 22:30:04
export default {
      methods: {
          //方法1
          a(){
              setInterval( ()=> {
                  this.b();  //---不执行报错:this.b() is not a function---
              },1000)
          },
          //方法2
          b(){
              console.log('调用成功')
          }
      }
}

//内部function改变了this指向 用前头函数或者先声明一下this

白云不回头 2022-09-18 22:30:04

this问题

a(){
      setInterval(function () {
          this.b();
      }.bind(this),1000)
  }
云醉月微眠 2022-09-18 22:30:04

第一种

a(){
  setInterval(()=> {
      this.b();
  },1000)
  },

第二种

a(){
  let self = this;
  setInterval(function () {
      self.b(); 
  },1000)
  },
灼痛 2022-09-18 22:30:04

this的指向问题。
定时器中的this指向window对象而非vue实例,在window对象中你并没有定义b()方法,自然会报错。

情话墙 2022-09-18 22:30:04

把定时器回掉函数改成箭头函数,你的上下文不对。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文