记笔记,免忘记!方便自己后续查阅!
问题如下图:
因为我这里是等待两个请求请求完成后再执行跳转方法,所以代码如下:
setTimeout(function(){
localStorage.removeItem('taskQuery');
this.$router.push({path:'/configure'})
},1000)
但是运行之后,报错 push undefined
解决如下:
1、网上说用前头函数,尝试了无效
2、增加.bind(this)成功。代码如下
setTimeout(function(){
localStorage.removeItem('taskQuery');
this.$router.push({path:'/configure'})
}.bind(this),1000)
原因:
在默认情况下,使用 setTimeout() 时,this
关键字会指向 window(或 global
)对象。当类的方法中需要 this
指向类的实例时,你可能需要显式地把 this
绑定到回调函数,就不会丢失该实例的引用。即 事件后添加
.bind(this)
setTimeout(function(){}.bind(this))
axios.post().then(res=>{}.bind(this))
....
或者在setTimeout()函数外面,定义一个变量来暂存this
参考文档