Firebase 保存数据方法异步或同步
Posted
技术标签:
【中文标题】Firebase 保存数据方法异步或同步【英文标题】:Firebase Saving Data Methods Asynchronous or Synchronous 【发布时间】:2016-11-13 08:02:58 【问题描述】:firebase 保存数据的方法,例如 childByAutoId 和 updateChildValues 是异步的还是同步的?似乎没有地方可以传入完成处理程序,所以我猜它们是同步的,但我不确定,因为 Firebase 会使这些常用方法同步似乎有点奇怪(出于性能目的)。
【问题讨论】:
【参考方案1】:与几乎所有现代网络一样,与 Firebase 数据库的交互是一种异步操作。这就是 Firebase 数据库 API 中的大多数方法都可以使用完成块的原因。
对于写操作,该块有时是可选的,因为在某些情况下您可能不想指定完成块。
例如,这里是 updateChildValues:withCompletionBlock
的 API 参考文档:
updateChildValues:withCompletionBlock:
斯威夫特
func updateChildValues(values: [NSObject : AnyObject], withCompletionBlock block: (NSError?, FIRDatabaseReference) -> Void)
参数
values - 要更改的键及其新值的字典
block - 在 Firebase 数据库服务器上写入更新后触发的块
childByAutoId
方法是客户端操作;它不需要与 Firebase 服务器交互,这也是它可以在用户未连接到数据库时运行的原因之一。由于它不需要与服务器交互,所以它是同步的并立即返回对新位置的引用,这保证了唯一性。如果您想详细了解childByAutoId
生成的密钥,请阅读这篇博文The 2^120 Ways to Ensure Unique Identifiers。
【讨论】:
以上是关于Firebase 保存数据方法异步或同步的主要内容,如果未能解决你的问题,请参考以下文章
Firebase读取/保存数据以将其用作列表|斯威夫特/火力地堡