2017-05-07 75 views
0

目前我開發了一個與Firebase數據庫通信的Ionic2應用程序。在更新節點時,它有時會起作用,有時卻不起作用。 所以我累了用下面的代碼處理錯誤:檢查推送是否成功 - angularfire2

this.db.list("/Events/" + this.eventID+ "/teilnehmer").push(this.userID) 
     .then(resolve => { 
      console.log('success'); 
     }, reject => { 
      console.log('error'); 
     }) 
     .catch(reject => { 
      console.log('catch'); 
     }); 

但是,即使我斷開我的Internet連接沒有拋出錯誤。 是否有人知道我如何處理錯誤,如果推不成功?

回答

2

我有同樣的情況推動沒有返回承諾的某個時候,所以我提出github FirebaseListObservable push() takes too long to add問題,但不幸的是它沒有解決,我通過電子郵件聯繫firebase支持,支持團隊審查我的問題,並檢查我發送的代碼,回答說沒有什麼代碼來執行,並勸我清楚手機的存儲緩存,我做了同樣的問題得到了解決,

這裏是火力支援

郵件

XXXX,您好!

我建議你嘗試又向前 之前清除手機緩存,它的內存可能太高。爲此,請轉到:設置 - > 存儲 - >緩存數據。選擇它然後選擇確定(用於清除緩存中的 )。也請查看Github上提出的相同問題 並由我們的工程師回答。

如果想提出的建議後問題仍然存在,請 回到我用最小的和可運行的代碼,我們可以用它來 模擬這個,可能是從 從頭碼plunkr或的jsfiddle代碼,或者是可以證明這個問題。

問候,XXXX

1

如果你想解決這個你可以考慮設置超時,因爲承諾會僅僅停留在「待定」如果火力地堡不返回任何東西和解決,拒絕/捕獲會永遠不會被觸發。

您可以用Promise.race()例如這樣做:Example Promise timeout with Promise.race()還要檢查這個線程:More Examples