2016-11-11 32 views
0

我正在使用Angularfire2以及Ionic2並尋找一種方法來捕獲FirebaseListObservable subscribe()函數上的錯誤。從Angularfire2上的FirebaseListObservable捕獲錯誤

我在訂閱fbData這是一個FirebaseListObservable,當我離線切換瀏覽器/設備時,(錯誤)功能從不會被調用。我不明白爲什麼。

我的目標是從localStorage獲取數據,如果用戶離線或無法訪問firebase。

這裏是我的簡化代碼:如果網絡不可達

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

回答

2

火力地堡不會拋出一個錯誤。 SDK靜靜地等待套接字連接建立起來。如果安全規則拒絕對查詢的讀取訪問權限,則訂閱只能出錯。

如果要實現這種超時方案,則必須手動執行所有操作:包括在啓動查詢時啓動超時並在查詢及時返回結果時取消超時。