web-dev-qa-db-fra.com

Quelles sont les restrictions sur ce qui peut et ne peut pas être fait chez un technicien de service?

Suite à Puis-je interroger http ou utiliser socket.io depuis un Service Worker sur Safari iOS? Quelle est la liste de ce qui peut et ne peut pas être fait dans un Service Worker? La réponse mentionnée ci-dessus dit "Vous ne pouvez pas ... avoir une connexion ouverte de quelque sorte que ce soit avec votre serveur", ce qui a du sens, mais où ce fait est-il documenté et comment la restriction est-elle appliquée?

Par exemple, certaines API de navigateur ne sont-elles pas disponibles pour les techniciens de service? ou y a-t-il un quota d'exécution qui empêche un processus de longue durée?

Par exemple. si mon service worker a ... setInterval (()=>{console.log('foo'), 1000}) ... va-t-il lever une exception ?, s'exécute-t-il puis échoue? le navigateur de comportement dépend-il?

11
pinoyyid

A service worker n'est pas simplement un autre thread, mais un type de thread très spécifique. Comme dedans, il est destiné à intercepter les demandes de récupération de réseau et de ressources et à faire quelque chose avec. Dans sa forme la plus basique, il met en cache si le réseau n'est pas disponible, mais il peut également renvoyer une ressource différente de celle demandée, une version plus ancienne ou un espace réservé, etc.

Par exemple. si mon service worker a ... setInterval (()=>{console.log('foo'), 1000}) ... va-t-il lever une exception? va-t-il fonctionner puis échouer? le navigateur de comportement dépend-il?

Cela fonctionnera probablement. Cependant, cela ne sert à rien car vous n'avez pas d'accès DOM et vous ne pouvez pas interagir directement avec l'utilisateur. Tout au plus, vous pouvez imprimer des erreurs et des avertissements bien que je ne sache pas quel avertissement nécessiterait une interrogation par intervalles.

D'après la question, il semble que vous essayez d'accomplir un travail d'arrière-plan sans bloquer le fil principal. Dans ce cas, le type le plus générique ( Worker API ) est votre ami.

0
Adnan Y