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

owe*_*ncm 24 service-worker progressive-web-apps

我正在写一个图书馆,我将为第三方提供在其网站上运行服务工作者的图书馆.它需要拦截所有网络请求,但我想让他们建立自己的服务工作者,如果他们喜欢.

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

谢谢

Sal*_*lva 35

你不能.每个范围只允许注册一个服务工作者,因此除非范围更具体,否则最后一个服务工作者将被删除,在这种情况下,请求仅由最具体的参与.

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

event.respondWith()同步调用的第一个处理程序(实际上,您不能异步调用此方法)获胜并且尝试调用的其余处理程序将抛出.

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