我正在编写一个图书馆,我将向第三方提供该图书馆以在其站点上运行服务工作者。它需要拦截所有网络请求,但我希望允许他们构建自己的服务工作者。
我是否可以使两个服务工作者都拦截相同的获取请求并在它们之间提供某种优先级/排序?或者,我应该使用其他模式吗?
谢谢
我正在编写一个图书馆,我将向第三方提供该图书馆以在其站点上运行服务工作者。它需要拦截所有网络请求,但我希望允许他们构建自己的服务工作者。
我是否可以使两个服务工作者都拦截相同的获取请求并在它们之间提供某种优先级/排序?或者,我应该使用其他模式吗?
谢谢
不行,只能注册一个服务工作者来覆盖整个范围,因此最新的会将先前的替换掉,除非范围更具体,在这种情况下,请求仅由最具体的处理。
然而,您可以附加多个fetch
处理程序,它们都将处理请求,因此也许您可以编写一个独立的脚本文件,并通过importScripts()
让用户的服务工作者包含您的文件。
第一个调用event.respondWith()
同步地(实际上,您无法异步调用此方法)赢得了胜利,尝试调用的其余处理程序将抛出异常。
优先级和协调需要中间件。您可以检查ServiceWorkerWare或sw-toolbox。
sw-toolbox
的替代品WorkBox是否支持中间件的概念吗? - Brett Zamirscope
值以斜杠结尾。 - KHAYRI R.R. WOULFE