Vuejs2 那么如何在axios内部延迟运行函数呢

Vuejs2 那么如何在axios内部延迟运行函数呢,vuejs2,axios,Vuejs2,Axios,我对vue有点陌生,所以请友善一点。我有一个简单的推送呼叫,我想在用户将照片上传到我的应用程序后运行2秒钟。我试图在axios“then”中实现这一点,但它会立即发生。我想让这一切在2秒后发生。如何使用setTimeout来完成此操作 我在这里看到了答案 但我的思想正在融化,试图理解它 ``` axios.put(`process.env.KITTY_URL}/api/v1/cats/${this.singleCat.id}/`,formData{ onUploadProgress:progre

我对vue有点陌生,所以请友善一点。我有一个简单的推送呼叫,我想在用户将照片上传到我的应用程序后运行2秒钟。我试图在axios“then”中实现这一点,但它会立即发生。我想让这一切在2秒后发生。如何使用setTimeout来完成此操作

我在这里看到了答案

但我的思想正在融化,试图理解它

```

axios.put(`process.env.KITTY_URL}/api/v1/cats/${this.singleCat.id}/`,formData{
onUploadProgress:progressEvent=>{
console.log('Upload progress:'+Math.round(progressEvent.loaded/progressEvent.total*100)+'%
}
})
。然后(响应=>{
response.status==200?this.showSuccess=true:this.showDanger=true;
this.singleCat=response.data;
//注意:设置一个计时器,在成功响应后2秒运行该行
setTimeout(function(){this.$router.push('/login');},2000){
console.log(错误);
这是真的;
})

```

首先,您需要绑定上下文。最简单的方法是使用箭头函数。因此,您只需将该行更改为:

setTimeout( () => this.$router.push('/login'), 2000);
另一种方法是使用异步/等待:

let response = await axios.put(...);
setTimeout( () => this.$router.push('/login'), 2000);
虽然这样处理错误的效果不如以前好:

类似问题:

let response = await axios.put(...);
setTimeout( () => this.$router.push('/login'), 2000);