Javascript Firestore多文档实时侦听器异步等待

Javascript Firestore多文档实时侦听器异步等待,javascript,firebase,google-cloud-firestore,async-await,Javascript,Firebase,Google Cloud Firestore,Async Await,我想知道Firestore的实时侦听器是否支持异步等待而不是承诺 文件建议: var unsubscribe = db.collection("cities").where("state", "==", "CA").onSnapshot(function(querySnapshot) { var cities = []; querySnapshot.forEach(function(doc) {

我想知道Firestore的实时侦听器是否支持异步等待而不是承诺

文件建议:

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(", "));

我如何使用async await编写它,并且能够同时使用detacher?

与Promissions一起使用async/await对侦听器没有意义。承诺表示以最终值或错误结束的工作单元。侦听器是一个正在进行的过程,在使用unsubscribe函数删除侦听器之前不会结束。它们是根本不同的东西


如果要执行一次性查询,并向您提供可以等待的承诺,则应使用get而不是onSnapshot,如中所述。当结果随时间变化时,仅当您希望更新查询时才使用侦听器。

与Promissions一起使用的async/await与侦听器一起使用没有意义。承诺表示以最终值或错误结束的工作单元。侦听器是一个正在进行的过程,在使用unsubscribe函数删除侦听器之前不会结束。它们是根本不同的东西


如果要执行一次性查询,并向您提供可以等待的承诺,则应使用get而不是onSnapshot,如中所述。只有当结果随时间变化而更新查询时,才使用侦听器。

好的,我明白了。在这种情况下,我不能对实时侦听器使用async Wait。谢谢,我明白了。在这种情况下,我不能对实时侦听器使用async Wait。谢谢