我可以让多个服务工作者拦截相同的获取请求吗?

时间:2016-03-14 23:40:45

标签: service-worker progressive-web-apps

我正在编写一个库,我将为第三方提供在其网站上运行服务工作者的库。它需要拦截所有网络请求,但我想允许他们建立自己的服务工作者。

我可以让两个服务工作者拦截相同的提取并在它们之间提供某种优先级/顺序吗?或者我应该使用其他一些模式吗?

由于

1 个答案:

答案 0 :(得分:31)

不,你不能。每个范围只允许注册一个服务工作者the latest kick the previous one out,除非范围更具体,在这种情况下,请求仅由最具体的参与者提供。

尽管如此,您可以附加多个fetch处理程序,它们都将处理请求,因此您可以在单独的脚本中编写功能,并让用户的服务工作人员通过importScripts()包含您的文件。

第一个同步调用event.respondWith()的处理程序(实际上,你不能异步调用这个方法)获胜,而剩下的试图调用的处理程序将抛出。

优先级和协调需要中间件。您可以查看ServiceWorkerWaresw-toolbox