Qu'arrive-t-il à un thread de travailleur Web HTML5 lorsque l'onglet est fermé pendant qu'il s'exécute?

StackOverflow https://stackoverflow.com/questions/8875310

  •  28-10-2019
  •  | 
  •  

Question

Je me demande ce qui se passe lorsqu'un utilisateur ferme l'onglet qui a engendré le thread des travailleurs, tandis que le fil fonctionne toujours. Est-ce que cela arrête tout? Si oui, y a-t-il un moyen d'exécuter le fil en arrière-plan même lorsque l'onglet est fermé?

Était-ce utile?

La solution

Oui, cela arrête tout, un travailleur (dédié) ne peut pas survivre à son propriétaire. Si vous utilisez un travailleur partagé, qui peut avoir plusieurs propriétaires, le travailleur ne restera en vie que tant qu'au moins un propriétaire est vivant. C'est le cas même si vous transmettez l'intrigue MessagePort à une autre fenêtre (c'est-à-dire que le propriétaire du port de message est ne pas le propriétaire du travailleur).

Ainsi, avec les travailleurs partagés, vous pouvez "transférer" la propriété en ouvrant une nouvelle fenêtre qui établit sa propre connexion avec le travailleur (avec new SharedWorker(...)) puis fermer l'ancienne fenêtre. Mais une fenêtre doit toujours rester ouverte.

Autres conseils

Jetez un œil ici

http://www.whatwg.org/specs/web-apps/current-work/multipage/workers.html#workerglobalscope

je pense Cela confirme qu'une fois que le navigateur disparaît, tous les travailleurs doivent s'arrêter.

Chaque fois qu'un objet de document est rejeté, il doit être supprimé de la liste des documents du travailleur de chaque travailleur dont la liste contient ce document.

Dans le cas où vous avez une fenêtre utilisant des travailleurs Web et vous fermez cette fenêtre (ou onglet), le travailleur disparaît.

Si vous avez un cas où vous avez une fenêtre, qui ouvre d'autres fenêtres ou onglets, les travailleurs peuvent continuer. Mais si vous fermez tout, ils disparaissent tous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top