web-dev-qa-db-fra.com

Puis-je avoir plusieurs employés de service interceptant la même demande de récupération?

J'écris une bibliothèque que je fournirai à des tiers pour faire fonctionner un technicien sur leur site. Il doit intercepter toutes les demandes du réseau, mais je veux leur permettre de créer leur propre service d'assistance s'ils le souhaitent.

Puis-je demander aux deux employés de service d'intercepter les mêmes récupérations et de fournir une sorte de priorité/ordre entre eux? Sinon, existe-t-il un autre modèle que je devrais utiliser?

Merci

27
owencm

Non tu ne peux pas. Un seul employé de service par portée est autorisé à être enregistré, donc le dernier enlève le précédent sauf si la portée est plus spécifique, dans ce cas, la demande est traitée uniquement par la plus spécifique.

Néanmoins, vous pouvez attacher plusieurs gestionnaires fetch et ils traiteront tous la demande afin que vous puissiez peut-être écrire votre fonctionnalité dans un script séparé et laisser le technicien de l'utilisateur à inclure votre fichier via importScripts() .

Le premier gestionnaire appelant event.respondWith() de manière synchrone (en fait, vous ne pouvez pas appeler cette méthode de manière asynchrone) gagne et les gestionnaires restants essayant d'appeler lancent.

La hiérarchisation et la coordination nécessitent un middleware. Vous pouvez vérifier ServiceWorkerWare ou sw-toolbox .

33
Salva