在Angularfire2上从FirebaseListObservable中捕获错误



我正在使用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
      );
    });
  }

Firebase 不会在网络不可达时抛出错误。SDK静默地等待套接字连接建立。只有当安全规则拒绝对查询的读访问时,订阅才会出错。

如果你想实现这样一个超时方案,你必须手动做所有的事情:包括当你开始一个查询时开始一个超时,当查询及时返回一个结果时取消它。

相关内容

  • 没有找到相关文章

最新更新