从 Angularfire2 上的 FirebaseListObservable 捕获错误
Catch errors from FirebaseListObservable on Angularfire2
我正在使用 Angularfire2
和 Ionic2
并寻找一种方法来捕获 FirebaseListObservable subscribe()
函数上的错误。
我正在订阅 fbData
,这是一个 FirebaseListObservable
,当我将 browser/device 切换为离线时,(错误)函数从未被调用。我不明白为什么。
我的 objective 是在用户离线或无法访问 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
);
});
}
如果网络无法访问,Firebase 不会 抛出错误。 SDK 静默等待套接字连接建立。只有在安全规则拒绝对查询的读取访问权限时,订阅才会出错。
如果您想实施这样的超时方案,则必须手动执行所有操作:包括在开始查询时启动超时,并在查询 returns 及时得到结果时取消超时。
我正在使用 Angularfire2
和 Ionic2
并寻找一种方法来捕获 FirebaseListObservable subscribe()
函数上的错误。
我正在订阅 fbData
,这是一个 FirebaseListObservable
,当我将 browser/device 切换为离线时,(错误)函数从未被调用。我不明白为什么。
我的 objective 是在用户离线或无法访问 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
);
});
}
如果网络无法访问,Firebase 不会 抛出错误。 SDK 静默等待套接字连接建立。只有在安全规则拒绝对查询的读取访问权限时,订阅才会出错。
如果您想实施这样的超时方案,则必须手动执行所有操作:包括在开始查询时启动超时,并在查询 returns 及时得到结果时取消超时。