Vue中使用setTimeout()定时器延迟执行方法不生效的原因及解决

在工作中遇到一个问题,在发布产品后,弹窗提示成功,2秒后弹窗关闭,跳转列表页。

示例:

setTimeout(function () {
  this.closeModal()
  list.api.reloadData();
},2000)

直接使用上面的代码执行 closeModal() 方法会报错 Uncaught TypeError: this.showModal is not a function ,不能正常执行。 

如果要在 Vue.js 中执行 setTimeout() 方法,应该使用下面的代码:

const that = this;
setTimeout(function () {
  that.closeModal()
  list.api.reloadData();
},2000)

需要注意一下,在 setTimeout() 方法中如果用到 this ,必须在函数外定义一个变量来暂存 this 。

如果不需要使用 this,则不用定义。代码如下:

setTimeout(function () {
  list.api.reloadData();
},2000)

以上,希望对您有所帮助。

赞 (0)
分享到: +

评论 沙发

Avatar

换个身份

  • 昵称 (必填)
  • 邮箱 (选填)