如何在执行 Firebase 删除请求后重新加载页面

How to reload the page after a Firebase delete request has executed

我有一个方法可以向我的 Firebase 集合发送删除请求。我希望在删除请求完成并删除文档后重新加载页面。就像现在一样,页面会立即重新加载并且文档不会删除,但如果我删除代码的重新加载部分,它会正常工作。

async deletePost() {
  database.collection("posts").where("id", "==", this.id).get().then(data => {
    data.forEach(doc => {
      doc.ref.delete()
    })
  }).then(() => {
    M.toast({
      classes: "toast-alert",
      html: "Post deleted"
    })
  }).then(
    window.location.reload()
  )
}

每个 delete() 调用都是异步的,因此您需要 所有 个调用才能完成。解决方案是对从 delete():

获得的 return 值使用 Promise.all
async deletePost() {
  return database.collection("posts").where("id", "==", this.id).get().then(data => {
    const promises = data.docs.map(doc => doc.ref.delete());
    return Promise.all(promises);
  }).then(() => {
    window.location.reload()
  )
}