Fonction asynchronous Firebase, ce qui est dans la queue d'arrière-plan et ce n'est pas

Disons que j'ai ceci

// a bunch of code... FIRDatabase.database.reference.child("somechild").observeSingleEventOfType(.Value, withBlock{(snapshot) in //some code inside of the completion handler}) 

S'il vous plaît ne lisez pas trop dans l'extrait de code demandant plus de code, je n'ai besoin que d'une réponse courte. Là où il est dit "un tas de code", supposons que c'est en fait du code qui se trouve dans la file MAIN. Maintenant, quand j'écris le gestionnaire de complétion observerSingleEvent Firebase, mon parsing est la suivante.

  1. observerSingleEvent récupère l'instantané dans une queue d'arrière-plan pour ne pas bloquer l'interface user qui se trouve dans la queue principale.

  2. Une fois qu'il récupère l'instantané, le bloc de code après "in" est maintenant de return dans la queue MAIN, donc c'est bien de mettre un code lié à l'interface user.

Mon application entière est basée sur ce raisonnement, donc si je me trompe, s'il vous plaît dites-moi ce qui se passe réellement.

C'est en effet ainsi que fonctionne le client Firebase Database: toutes les E / S réseau et disque se déroulent sur le thread principal, puis vos callbacks / blocks sont invoqués sur le thread principal.