【问题标题】:Firestore realtime listener to multiple documents async awaitFirestore 实时监听多个文档异步等待
【发布时间】:2020-11-30 15:52:04
【问题描述】:

我想知道 Firestore 的实时监听器是否支持 async await 而不是 promise?

文档建议:

var unsubscribe = db.collection("cities").where("state", "==", "CA").onSnapshot(function(querySnapshot) {
    var cities = [];
    querySnapshot.forEach(function(doc) {
       cities.push(doc.data().name);
    });
    console.log("Current cities in CA: ", cities.join(", "));
});
unsubscribe();

我可以使用async await 编写上述实时监听器吗?我尝试了以下方法,但监听器不再工作。此外,将无法再分离侦听器。

var querySnapshot = db.collection("cities").where("state", "==", "CA").onSnapshot
var cities = [];
querySnapshot.forEach(function(doc) {
   cities.push(doc.data().name);
});
console.log("Current cities in CA: ", cities.join(", "));

如何使用asyncawait 编写它并且还可以使用分离器?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore async-await


    【解决方案1】:

    async/await(与承诺一起使用)与侦听器一起使用没有意义。 Promise 表示以最终值或错误结束的工作单元。侦听器是一个持续的过程,直到使用取消订阅功能删除侦听器才完成。它们是根本不同的东西。

    如果您想要进行一次性查询,以保证您可以等待,您应该使用get() 而不是onSnapshot(),如documentation 中所述。仅当您希望在结果随时间变化时更新查询时才使用侦听器。

    【讨论】:

    • 好的,我明白了。在这种情况下,我不能将async await 与实时监听器一起使用。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-05-04
    • 2021-01-08
    • 2019-04-20
    • 2020-10-17
    • 2020-10-20
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多