firebase保存数据方法(例如childByAutoId和updateChildValues)是异步还是同步?似乎没有地方可以通过完成处理程序,因此我猜测它们是同步的,但我不确定,因为Firebase会使这些常用的方法同步似乎有点奇怪(出于性能目的)
答案 0 :(得分:0)
与几乎所有现代网站一样,与Firebase数据库交互是一种异步操作。这就是为什么Firebase Database API中的大多数方法都可以采用完成块的原因。
对于写入操作,块有时是可选的,因为在某些情况下您可能不想指定完成块。
例如,这是react-geosuggest
的API参考文档:
updateChildValues:withCompletionBlock
SWIFT
updateChildValues:withCompletionBlock:
参数
values - 要更改的密钥及其新值的字典
块 - 在Firebase数据库服务器上写入更新后触发的块
func updateChildValues(values: [NSObject : AnyObject], withCompletionBlock block: (NSError?, FIRDatabaseReference) -> Void)
方法是客户端操作;它不需要与Firebase服务器交互,这是用户未连接到数据库时可以运行的原因之一。由于它不需要与服务器交互,因此它是同步的并立即返回对新位置的引用,这保证是唯一的。如果您想详细了解childByAutoId
生成的密钥,请阅读此博文The 2^120 Ways to Ensure Unique Identifiers。