CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Web Workers

Pseudo supprimé
Pseudo supprimé 02 juillet 2014 à 19:12:22

Salut à tous,

Je suis tombé sur un petit exposé des dernières évolutions du web, où il était dit, entre autres, qu'on pouvait oublier le JS en fin de page et se pencher plutôt sur les webworkers, d'utiliser settimeout. J'ai fait quelques recherches et vu quelques articles soit trop "techniques", soit absolument incompréhensibles.

Je vois bien l'interêt du settimeout, mais j'ai du mal à me dire qu'il faudrait déclencher toutes les fonctions avec ça. Qu'en pensez-vous ? Et à propos des webworkers, quelqu'un a-t-il un bon document pour en apprendre plus ?

Merci

vava740
vava740
Niveau 10
05 juillet 2014 à 13:56:19

Tu as le lien de l'exposé en question ? Je vois vraiment mal le point avec setTimeout.

Tu utilises setTimeout quand tu as besoin de différer l'exécution d'une fonction, mais je ne vois pas pourquoi il faudrait déclencher toutes les fonctions par setTimeout (à part s'embêter encore plus avec les callbacks).

J'ai pas de ressources particulières à te donner sur les web workers, mais c'est pas le genre de truc que tu utilises pour tout et n'importe quoi.

Un web worker c'est un script qui va tourner en parallèle et qui est là pour faire uniquement du calcul brut. Il a une interface de communication restreinte avec les scripts sur la page web (tout ce qui est passé par ce tunnel de communication doit être sérialisable), et ne peut pas accéder (entre autres) au DOM.

L'use case typique d'un web worker, c'est de récupérer des données sur la page web et de vouloir effectuer un traitement lourd dessus ; tu passes les données au worker, puis celui-ci se charge de faire les calculs (sans bloquer la page web). Une fois les calculs terminés, il peut envoyer un message à la page web avec le résultat.

Si tu fais le traitement directement sur la page web, l'UI et l'ensemble des scripts seront bloqués durant le traitement. Avec un worker, tout continuera de fonctionner en même temps.

Il y a également un pattern qui permet d'émuler ce comportement avec setTimeout justement (c'est peut-être de ça que l'exposé parlait) ; en réécrivant le traitement lourd de sorte à ce qu'il puisse être interrompu à certains points clés (par exemple, chaque itération d'une boucle), tu peux glisser des petits setTimeout régulièrement qui font qu'au lieu de faire un traitement procédural bloquant, tu exécutes un petit bout du traitement, puis tu laisse quelques milisecondes à la page web pour vivre, puis tu reprends la suite du traitement, et ainsi de suite. Les performances sont souvent exécrables par rapport à un web worker (avec lequel il n'y a pas un temps arbitraire laissé à la page web pour fonctionner, le calcul reprend dès que possible).

Il y a l'article sur les web workers d'OpenClassrooms[1] qui a l'air assez complet, et que j'avais lu il fut un temps.

[1] http://fr.openclassrooms.com/informatique/cours/html5-web-workers-le-monde-parallele-du-javascript

Et pour un exemple plus concret, tu peux regarder ce projet[2] qui enregistre le son du micro (grâce à getUserMedia) et l'encode dans un web worker (pour ne pas bloquer la page web durant le traitement), worker qui est fourni par cette librairie[3].

[2] http://webaudiodemos.appspot.com/AudioRecorder/index.html
[3] https://github.com/mattdiamond/Recorderjs

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment