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/