我正在使用Angularfire2
和Ionic2
,并寻找一种方法来捕捉FirebaseListObservable subscribe()
函数的错误。
我正在订阅fbData
FirebaseListObservable
,当我将浏览器/设备切换为离线时,永远不会调用(错误)函数。我不明白为什么。
我的目标是在用户离线或无法访问firebase时从localStorage获取数据。
这是我的简化代码:
export class MyService {
fbData: FirebaseListObservable<any[]>;
constructor(private af: AngularFire) {
this.data = af.database.list('/data', { preserveSnapshot: true });
}
updateData() {
return new Promise<any[]>((resolve, reject) => {
this.fbData.subscribe(
(snapshots) => {
resolve(snapshot.val());
},
(error) => console.log('error: ', error) // NEVER CALLED
);
});
}
答案 0 :(得分:2)
Firebase 将不会抛出错误。 SDK静默等待套接字连接建立。如果安全规则拒绝对查询的读访问权,则订阅只会出错。
如果要实现这样的超时方案,则必须手动完成所有操作:包括在启动查询时启动超时,并在查询返回结果时取消它。