我正在编写一个库,我将为第 3 方提供在其站点上运行服务人员的库。它需要拦截所有网络请求,但如果他们愿意,我想允许他们构建自己的服务工作者。
我可以让两个服务人员拦截相同的提取并在它们之间提供某种优先级/排序吗?或者我应该使用其他一些模式吗?
谢谢
我正在编写一个库,我将为第 3 方提供在其站点上运行服务人员的库。它需要拦截所有网络请求,但如果他们愿意,我想允许他们构建自己的服务工作者。
我可以让两个服务人员拦截相同的提取并在它们之间提供某种优先级/排序吗?或者我应该使用其他一些模式吗?
谢谢
你不能。每个范围只允许注册一个服务工作者,因此除非范围更具体,否则最新的会踢出前一个,在这种情况下,只有最具体的请求才会参与。
不过,您可以附加多个fetch
处理程序,它们都将处理请求,因此也许您可以在单独的脚本中编写您的功能,并让用户的服务人员通过importScripts()
.
第一个event.respondWith()
同步调用的处理程序(实际上,您不能异步调用此方法)获胜,其余尝试调用的处理程序将抛出。
优先级和协调需要中间件。您可以检查ServiceWorkerWare或sw-toolbox。