recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment js peut-il obtenir un effet multithread?

Comment js peut-il obtenir un effet multithread ?

伊谢尔伦伊谢尔伦2807 Il y a quelques jours662

répondre à tous(5)je répondrai

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:28:22

    Parlons d'abord du principe d'exécution de JS : lorsque le moteur js exécute du code js, il est monothread, c'est-à-dire qu'un seul processus exécutera le code JS en même temps, et les fonctions de rappel sont également exécutées une par un (dans l'ordre des événements, pas dans l'ordre du code). La communication et la synchronisation asynchrones dans JS sont implémentées par un autre thread, indépendant du contexte du thread js. Prenons l'exemple de l'opération de synchronisation JS. Lorsque le moteur JS exécute l'opération setTimeout(callbackFunction, 100), il informera le thread de synchronisation que j'ai besoin de 100 millisecondes de synchronisation, puis le moteur JS entrera dans la boucle d'événements. Après 100 millisecondes, le moteur de synchronisation ajoute un événement ayant expiré à la file d'attente des événements. Le moteur JS lit l'événement de délai d'attente dans la file d'attente et exécute la fonction callbackFunction. Si plusieurs événements sont ajoutés à la file d'attente des événements en même temps, le moteur JS n'exécutera les rappels qu'un par un. Il en va de même pour l'asynchrone. Le code JS lance une demande de communication, le thread de communication effectue l'opération de communication et ajoute l'événement d'achèvement à la file d'attente des événements une fois l'opération terminée. Le moteur JS extrait l'événement de la file d'attente et appelle un rappel pour traiter le résultat de la communication. Lorsque le moteur JS exécute la fonction de rappel, il ne peut pas répondre à d'autres événements en même temps.

    répondre
    0
  • 黄舟

    黄舟2017-05-19 10:28:22

    Le travailleur Web de JS peut effectuer certaines opérations à grande échelle sur le thread d'arrière-plan sans bloquer le thread principal ; il communique avec onmessage et le thread principal via postmessage ; mais il a des restrictions et ne peut pas faire fonctionner le DOM et certaines API pour lesquelles vous pouvez lire la documentation ; détails.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-19 10:28:22

    Javascript est monothread.

    répondre
    0
  • 黄舟

    黄舟2017-05-19 10:28:22

    Javascript est threadé. Si vous souhaitez obtenir des effets multithreads, vous pouvez envisager node.js pour atteindre l'objectif via des événements de nœud.

    répondre
    0
  • 漂亮男人

    漂亮男人2017-05-19 10:28:22

    S'il est utilisé dans un navigateur, il existe désormais un service worker qui peut exécuter des js en arrière-plan, ce qui revient à ouvrir un fil de discussion supplémentaire. Je n'y connais pas grand chose, mais vous pouvez le découvrir si vous en avez besoin

    répondre
    0
  • Annulerrépondre