2016-11-11 3 views
0

Ich benutze Angularfire2 zusammen mit Ionic2 und auf der Suche nach einer Möglichkeit, Fehler auf FirebaseListObservable subscribe() Funktion zu fangen.Catch Fehler von FirebaseListObservable auf Angularfire2

Ich abonniere fbData das ist eine FirebaseListObservable, und wenn ich meinen Browser/Gerät offline, wird die (Fehler) Funktion nie aufgerufen. Ich verstehe nicht warum.

Mein Ziel ist es, Daten aus dem localStorage zu erhalten, wenn der Benutzer offline ist oder Firebase nicht erreichbar ist.

Hier ist meine vereinfachte Code:

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 
    ); 
    }); 
    } 

Antwort

2

Firebase wird nicht einen Fehler aus, wenn das Netzwerk nicht erreichbar ist. Das SDK wartet automatisch auf den Aufbau der Socket-Verbindung. Das Abonnement kann nur fehlschlagen, wenn die Sicherheitsregeln den Lesezugriff auf die Abfrage verweigern.

Wenn Sie ein solches Timeout-Schema implementieren möchten, müssen Sie alles manuell tun: Dazu gehört das Starten eines Zeitlimits beim Starten einer Abfrage und das Abbrechen, wenn die Abfrage ein Ergebnis rechtzeitig zurückgibt.

Verwandte Themen