サードパーティがサイトでサービスワーカーを実行するために提供するライブラリを作成しています。すべてのネットワーク要求をインターセプトする必要がありますが、必要に応じて独自のサービスワーカーを構築できるようにしたいと思います。
両方のサービスワーカーが同じフェッチをインターセプトし、それらの間で何らかの優先順位/順序を提供することはできますか?あるいは、使用する必要がある他のパターンがありますか?
ありがとう
いいえ、あなたがすることはできません。スコープごとに登録できるのは1つのサービスワーカーのみです。したがって、スコープがより具体的でない限り、 最新のキックは前のアウトをキックします 、この場合、リクエストには最も具体的なユーザーのみが参加します。
それでも、複数のfetch
ハンドラーをアタッチでき、それらすべてがリクエストを処理するため、別のスクリプトで機能を記述し、ユーザーのサービスワーカーに importScripts()
。
event.respondWith()
を同期的に呼び出した最初のハンドラー(実際には、このメソッドを非同期的に呼び出すことはできません)が勝ち、呼び出ししようとしている残りのハンドラーがスローされます。
優先順位付けと調整にはミドルウェアが必要です。 ServiceWorkerWare または sw-toolbox を確認できます。