从Angularfire2上的FirebaseListObservable捕获错误

时间:2016-11-11 19:30:13

标签: firebase ionic2 angularfire angularfire2

我正在使用Angularfire2Ionic2,并寻找一种方法来捕捉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
      );
    });
  }

1 个答案:

答案 0 :(得分:2)

如果网络无法访问,

Firebase 将不会抛出错误。 SDK静默等待套接字连接建立。如果安全规则拒绝对查询的读访问权,则订阅只会出错。

如果要实现这样的超时方案,则必须手动完成所有操作:包括在启动查询时启动超时,并在查询返回结果时取消它。