Angular.io拦截器与服务工作者

时间:2018-01-04 17:28:17

标签: angular service-worker angular4-httpclient

我想更好地理解实现离线友好型Web应用程序的选项,我在这里阅读这篇文章:https://angular.io/guide/http也讨论了角度的拦截器。

现在我有点困惑:

一方面,我们有服务工作者(浏览器尚未完全支持),这将有助于实现脱机的第一/友好应用程序,另一方面我们有这个强大的工具 - 拦截器 - 可以做很多事情来帮助应用程序可以更好地处理差的连接环境。

那么这两个人之间有什么区别吗?什么时候使用,何时使用另一个?

1 个答案:

答案 0 :(得分:6)

HttpClient拦截器和服务工作者是不同的层。

HttpClient拦截器仅处理在特定Angular应用程序中使用HttpClient提供程序执行的请求。

服务工作者处理在浏览器窗口中执行的所有请求,包括页面本身,资产和AJAX(XHRFetch)请求。

他们唯一的常见用途是HttpClient请求远程API。

由于API请求可以在Angular应用程序的不同位置处理,因此由开发人员决定哪一个是合适的。服务工作者,HttpClient拦截器或使用HttpClient的服务可能会因请求失败而导致回退。

考虑到可以通过多种方式解决问题,并且浏览器支持很重要,服务工作者将不会是首选。如果单独使用HttpClient无法解决问题或者解决方案不切实际,那么这对服务工作者来说就是一项工作。例如,当二进制文件更合适时,使用AJAX传输base64图像。

服务工作者不阻止主线程这一事实也是一个主要问题。