【问题标题】:Firebase basic promise returningFirebase 基本承诺返回
【发布时间】:2017-03-11 23:31:55
【问题描述】:

这是一个非常基本的问题,所以我提前道歉。但我整晚都在为此苦苦挣扎。我有一个简单的 firebase 数据库查询...我知道它可以工作。我使用 child_added 所以它会在我查询的地方为每个不同的节点返回几次。

然后,我尝试在回调完全完成调用后对其进行补充。现在它将返回大约 10 个不同的值,所以我的目标是在数据库引用完成后使用承诺或某种回调来运行代码。

 var getIsStarred = getFirebase().database().ref('feed/value').on('child_added').then(function(snapshot) {
    console.log("JX10: ok")
  });

Promise.(getIsStarred).then(function(results) {
    console.log("JX10: end promise thing okay sick")
});

提前感谢您的帮助!

【问题讨论】:

  • itll return a few times for each different node - 你不能使用 Promise,因为 Promise 只能实现一次…….on('child_added') 甚至会返回一个 Promise 吗?

标签: javascript firebase promise firebase-realtime-database


【解决方案1】:

Firebase 的 on() 函数文档在这里:https://firebase.google.com/docs/reference/js/firebase.database.Reference#on

如您所见,它需要一个回调,并且还返回回调,以便在需要时将其用作off() 调用的参数。看起来不像是在任何地方都返回了承诺。

【讨论】:

    【解决方案2】:

    听起来您在加载所有子项后尝试运行一个动作。您可以使用 once('value' 处理程序来做到这一点:

    var getIsStarred = getFirebase().database().ref('feed/value').once('value').then(function(snapshot) {
        console.log("the initial items have been loaded")
     });
    

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 1970-01-01
      • 2016-06-15
      • 2019-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多