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

Angular.io interceptors vs service workers

我想更好地了解实现离线友好网络应用程序的选项,我在这里阅读了这篇文章:https://angular.io/guide/http,其中还讨论了 angular 的拦截器。

现在有点疑惑:

一方面,我们有服务工作者(浏览器尚未完全支持),这将有助于实现离线 first/friendly 应用程序,另一方面,我们有这个强大的工具——拦截器——它可以做很多事情帮助应用程序更好地处理不良或无连接环境的事情。

那么大家对这两者的区别有清楚的认识吗?什么时候用一个,什么时候用另一个?

HttpClient拦截器和service worker是不同的层。

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

Service workers 处理在浏览器 window 中执行的所有请求,包括页面本身、资产和 AJAX(XHRFetch)请求。

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

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

的服务中

考虑到一个问题可以通过多种方式解决,并且浏览器支持很重要,Service Workers 不会是首选。如果仅靠 HttpClient 无法解决问题或解决方案不切实际,则这是服务人员的工作。例如,当二进制文件更合适时,使用 AJAX 传输 base64 图像。

service workers 不阻塞主线程也是一个主要问题。