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)

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

推荐阅读:

HTML引入文件的绝对路径、相对路径、根目录

Linux下如何重置MySQL密码

20180410博客更换服务器步骤

js获取input上传文件的文件名和扩展名的方法

【笔记】5.2学习小程序用到的网站和资料

赞 (0)
分享到: +

评论 沙发

换个身份

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