2 回答
TA贡献2037条经验 获得超6个赞
Firebase 实时数据库不会将缺乏互联网连接视为错误情况。相反,它会在给定条件下继续发挥其最佳能力。
当您执行写入操作(与set
,push
,update
,或remove
),而没有互联网连接:
第一个客户端立即触发本地事件,以便您的应用程序可以为新的/更新的数据更新 UI。
然后,一旦连接恢复,它就会将写入操作排队以进行传送。
连接恢复后,客户端会按照客户端执行的顺序发送所有挂起的写入操作。
然后它处理来自服务器的响应,这(如果服务器由于安全规则拒绝操作)可能会导致触发更多本地事件,以便应用程序可以将 UI 恢复到正确的状态。
它然后最后调用任何完成的听众,并解决或拒绝的承诺
set()
,push()
,update()
,或remove()
方法。
您会注意到,在任何时候都不会因缺少 Internet 连接而引发任何错误。
如果您不想在应用没有互联网连接时向本地队列发送任何数据,最好检测 Firebase 客户端是否已连接到服务器。您可以通过侦听.info/connected
伪节点来做到这一点。顺便说一句,这不仅涵盖了互联网连接,还涵盖了互联网连接有效但客户端无法访问 Firebase 的情况。此处的最佳实践是针对此状态使用“全局”侦听器,并在客户端未连接时禁用相关 UI 元素。
TA贡献1807条经验 获得超9个赞
此函数基于 Promise,因此您可以使用 try/catch:
try {
firebase.push(data) // or set
} catch (error) {
console.log(error) // here is error
}
添加回答
举报