【问题标题】:Catch errors from FirebaseListObservable on Angularfire2从 Angularfire2 上的 FirebaseListObservable 捕获错误
【发布时间】:2016-11-11 19:30:13
【问题描述】:

我正在使用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 ionic2 angularfire angularfire2


    【解决方案1】:

    如果网络无法访问,Firebase 不会抛出错误。 SDK 静默等待套接字连接建立。只有在安全规则拒绝对查询的读取访问权限时,订阅才会出错。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-20
      • 2018-06-16
      • 2019-05-26
      • 2016-09-08
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多