【问题标题】:How to detect when observer finished Firebase如何检测观察者何时完成 Firebase
【发布时间】:2017-10-16 11:59:47
【问题描述】:

您好,我有一个 Firebase 应用,我想在应用启动时下载我的所有数据库。所有这些工作正常,但我想知道下载何时完成。

    func getAllDevices(completion: @escaping (Bool) -> Void) {
    reference.child("devices").queryOrderedByKey().observe(.childAdded) { (snapshot) in
        if let data = snapshot.value as? [String: Any] {
            self.sync(device: data)
        }
       // completion(true)

    }

我尝试使用完成处理程序,但它并不好,因为每次下载新对象时都会调用它。有什么方法可以在下载完成后收到通知?

【问题讨论】:

  • 要检测所有初始子项何时已被读取,您需要观察.value 事件。这是一个example for Swift,对于 JavaScript(同样的逻辑适用):123
  • 感谢您的帮助。多亏了你,我才能解决这个问题:)。

标签: swift firebase firebase-realtime-database


【解决方案1】:

我可以使用.value 事件解决问题。我做了这样的事情,现在工作正常。

    func getAllDevices(completion: @escaping (Bool) -> Void) {
    reference.child("devices").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in

        if let devices = snapshot.value as? [String: Any] {
            for data in devices.values {
                self.sync(device: data as! [String : Any])
            }
        }

        completion(true)
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 2013-03-31
    • 2018-03-02
    相关资源
    最近更新 更多