gpt4 book ai didi

javascript - 如何在多个 Axios 调用上运行回退?

转载 作者:行者123 更新时间:2023-11-30 14:05:47 26 4
gpt4 key购买 nike

在我的应用中,一条评论可以是父评论,也可以有子评论。删除父评论时,我正在检查 child 是否存在;如果是这样,我也会删除它们(每个都有一个单独的 Axios 调用)。

但是一旦完成所有这些,我需要运行一些刷新代码。有没有一种简单的方法可以实现这一目标?我可以在哪里放置刷新代码?

到目前为止,这是我的代码:

deleteCommentAxiosCall (id) {
return this.$axios.delete(`/api/v1/comment/${this.comment.id}`)
},
deleteComment () {
return new Promise((resolve, reject) => {
this.deleteCommentAxiosCall(this.comment.id)
if (this.comment.child_comments.length) {
this.comment.child_comments.forEach((child) => {
this.deleteCommentAxiosCall(child.id)
})
}
})
window.location.reload() // refresh code

最佳答案

您必须链接 promise 以确保删除在刷新之前得到解决。使用 Promise.all()一次等待几个 promise 。在这种情况下,您将等待删除父评论和子评论。

deleteComment () {
return Promise.all([
this.deleteCommentAxiosCall(this.comment.id),
this.comment.child_comments.map(child => this.deleteCommentAxiosCall(child.id))
])
.then(() => window.location.reload())
}

或使用 async function :

async deleteComment () {
await Promise.all([
this.deleteCommentAxiosCall(this.comment.id),
this.comment.child_comments.map(child => this.deleteCommentAxiosCall(child.id))
])
window.location.reload()
}

另外:重新加载页面对用户来说可能有些不和谐。也许一种更无缝的刷新评论的方法是通过显式 API 请求重新请求评论。示例:

this.$axios.get(`/api/v1/comments`).then(resp => this.comments = resp.data.comments)

关于javascript - 如何在多个 Axios 调用上运行回退?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55422988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com