Firebase异步函数,后台队列中的内容以及不是什么

sli*_*boy 4 ios firebase swift firebase-realtime-database

让我们说我有这个

// a bunch of code...  
FIRDatabase.database.reference.child("somechild").observeSingleEventOfType(.Value, withBlock{(snapshot) in   

//some code inside of the completion handler})
Run Code Online (Sandbox Code Playgroud)

请不要过多地阅读代码片段以获取更多代码,我只需要一个简短的答案.它说"一堆代码",假设它实际上是MAIN队列中的一些代码.现在,当我写下observeSingleEvent Firebase完成处理程序时,我对它的分析是这样的.

  1. observeSingleEvent在后台队列上获取快照,以便不阻止主队列上的UI.

  2. 一旦它获取了快照,"in"之后的代码块现在又回到了MAIN队列,所以可以将任何与UI相关的代码放在那里.

我的整个应用都基于这个推理,所以如果我不对,请告诉我实际发生了什么.

Fra*_*len 9

这的确是火力地堡数据库客户端是如何工作的:所有的网络和磁盘I/O发生主线程,那么你的回调/块调用主线程.