【问题标题】:How do you await data from firebase?您如何等待来自 firebase 的数据?
【发布时间】:2022-08-23 08:13:56
【问题描述】:

我想在 angularfire 中调用我的下一个函数之前等待数据返回。

这是我当前的代码...我想替换 settimeout ...我知道这不是最好的方法。

  function(){
    this.db.collection(\'myCollection\').doc(\'myDoc\').valueChanges().subscribe(res => {
      this.myData = res
    })

    setTimeout(() => {
      this.myFunction(this.myData)
    }, 1500);
  }

    标签: typescript angularfire2


    【解决方案1】:

    await 在这里没有意义。

    await 是一个管理 Promise 的工具。反过来,Promise 是等待某事发生一次的工具。

    valueChanges 发生每次值会改变,而不仅仅是一次。

    如果你将它包装在一个 Promise 中,那么它会在第一次更改值时起作用,但在下次更改时会失败。


    您应该use get instead 或在订阅函数中完成工作,以便在每次值更改时完成。

    【讨论】:

      【解决方案2】:

      这应该可以解决问题

      const myData = (
        await this.db.collection('myCollection').doc('myDoc').get().toPromise()
      ).data()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2019-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-04
        • 1970-01-01
        相关资源
        最近更新 更多