我有3个孩子的裁判。我想使用.childAdded
或.value
观察它。如果出现问题,将运行一个withCancel:
事件。自从我进行测试以来,我还没有运行withCancel:
,所以这就是为什么我问这个问题。
如果出现问题并且withCancel:
运行,它会在每次循环发生时运行还是在查询的初始时间运行一次?
例如如果.childAdded
或.value
抓住了第一个孩子并且成功了,那么当它去抓住第二个孩子时,withCancel:
会出现问题,但是它将尝试第三个孩子一个孩子,可以是成功的,也可以是取消的。这意味着我肯定会生第一个孩子,我绝对不会生第二个孩子,但我可能会或不会生第三个孩子。
或
一旦建立连接并且运行了来自闭包的快照,withCancel:
就永远不会有开火的机会,我保证会得到所有3个孩子吗?这意味着一旦观察者开始,如果到达第一个孩子,我保证得到第二个和第三个孩子,因为withCancel:
一旦开始观察就再也不会触发。相反,如果withCancel:
被解雇,甚至还没有生到第一个孩子,那么我将无法获得第二和第三个孩子,而且我什么也得不到。
// or .value
ref?.observe( .childAdded, with: { [weak self](snapshot) in
// do something with each snapshot
}, withCancel: { [weak self](error) in
// do something based on wether this will fire only once or can fire multiple times
// for example if only once and I won't get anything then reload the tableView
// if in can run multiple times then don't reload the tableView until it's finished. I have to add a limit to the query
})