Firebase保存数据方法(例如childByAutoId和updateChildValues)是异步还是同步?似乎没有地方可以传入完成处理程序,因此我猜想它们是同步的,但是我不确定,因为出于性能目的,Firebase会使这种常用方法同步似乎有点奇怪。

最佳答案

与几乎所有现代网络一样,与Firebase数据库进行交互是一种异步操作。因此,Firebase Database API中的大多数方法都可以使用完成块。

对于写操作,该块有时是可选的,因为在某些情况下,您可能不想指定完成块。

例如,这是updateChildValues:withCompletionBlock的API参考文档:


  updateChildValues:withCompletionBlock:
  
  迅速
  
  func updateChildValues(values: [NSObject : AnyObject], withCompletionBlock block: (NSError?, FIRDatabaseReference) -> Void)
  
  参量
  
  values-要更改的键及其新值的字典
  
  块-在Firebase数据库服务器上写入更新后触发的块


childByAutoId方法是客户端操作;它不需要与Firebase服务器进行交互,这是当用户未连接到数据库时它可以运行的原因之一。由于它不需要与服务器进行交互,因此它是同步的,并且会立即返回对新位置的引用,这将保证是唯一的。如果要了解有关childByAutoId生成的密钥的更多信息,请阅读此博客文章The 2^120 Ways to Ensure Unique Identifiers

关于ios - Firebase异步或同步保存数据方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40571767/

10-10 21:09
查看更多