如何检测导航离开页面导致的AngularJS $ http错误?

时间:2014-01-26 03:08:21

标签: angularjs angularjs-service

当使用$http服务进行呼叫时,如果用户在呼叫仍在进行时离开页面,则似乎HTTP请求被中止,并且promise将调用其error()处理程序。但是,我似乎无法弄清楚如何检测何时从远程服务器获取响应(服务器关闭,网络关闭,超时等)的实际问题触发此错误,而不是因为用户导航。这两种情况似乎都传递给错误处理程序的相同的几乎空的响应状态参数。 (data为空,status为0,等等。)

我考虑使用beforeUnload事件处理程序来检测导航并假设在该事件之后遇到的任何错误都应该被忽略,但是,移动Safari和其他浏览器不支持此事件,因此它不可靠溶液

这似乎是一个普遍的问题 - 人们通常如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

HTML5提供了一个方便的历史API来处理这种情况。但是它因浏览器而异。为了确保(最多一点)跨浏览器兼容性,我建议您使用库History.js

该库提供了一个您可以处理的有用事件:statechange

对于您的用例,您可以警告用户已启动请求并相应地响应该操作。

https://github.com/browserstate/History.js/