我在我的应用程序中使用 Firebase,它会查询大量用户并获取所需的特定数据,但是当它开始查询时 - 函数的其余部分也会继续运行,而不仅仅是查询,这样我就可以不明白什么时候结束。
例如在此代码中:
ref.observeEventType(.ChildAdded, withBlock: { snapshot in
let user = snapshot.value!.objectForKey("User")
let name = (user!["Name"])! as! String
print("name")
})
print("done")
假设 Firebase 数据库中有 3 个用户 - 打印的代码为:
done
nameuser1
nameuser2
nameuser3
(或者完成
将位于名称用户之间,取决于您的互联网连接 - 但它不会是最后一个)
最佳答案
Firebase 回调 block 是异步的,而打印行是同步的。这意味着只要 block 从底层 API 调用接收到返回的数据, block 就会运行,而 block 外部的“打印”(和其他)行将继续按顺序运行。
这就是为什么在运行回调 block 之前运行打印行。
关于ios - 当 Firebase 函数以 Swift 结束时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39201596/