2017-05-07 74 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