Il ne fait aucun doute que JavaScript. le fonctionnement de l'utilisateur. Merci, HTML5 nous fournit un mécanisme multi-thread.
1. Classe de travailleurs 1. Introduction de la méthode(1) Construction de la fonction Nouveau travailleur (arg): le paramètre représente le fichier js où le code que vous souhaitez exécuter, tel que «myworker.js», et le constructeur renvoie bien sûr une instance d'une classe de travailleurs
(2) Worker.PostMessage (Message): Cette méthode indique que l'envoi de messages du thread principal aux sous-tirs ou sous-étals envoie des messages au thread principal.
(3) Il y a aussi un événement de message sur le travailleur.
Vous pouvez voir que l'API de la classe de woker est assez concise.
//main.html <!!!! </ head> <div id = out> </ div> <input type = text name = id = txt> <button id = btn> send </ bouton> <script type = text / javascript> var out = document.getElementByid (Out); script> </ html> // thread1.jsonmesage tion (événement) {var res = event.data + beau! ;
Lorsque j'entre dans la zone de texte grande ~ ours cliquez sur le bouton d'envoi, il y aura l'effet suivant
Analyse et analyse simple, j'ai créé un travailleur d'instructions sur le fil principal par Trip1.js. .js faire et ça? Oui, il a écouté l'incident du message. , Puis renvoyez-le. Le fil principal a également écouté l'événement du message du travailleur, de sorte que le message sera déclenché dans le passé, et le contenu du message s'affiche dans Div, de sorte que l'effet ci-dessus est vu.
Peut-être que vous l'utiliserez? C'est vraiment inutile ici. Fonctionnement, parce que sa complexité est O (1) (haha, il étudie récemment des algorithmes!), Mais si ce n'était pas une opération aussi simple? L'avantage de cette méthode est que votre sous-étage est compliqué, vous n'arrêtez pas le fil principal.
Le professeur Lu pourra appeler un nouveau travailleur () pour créer un nouveau sous-thread dans le sous-thread. a vérifié le document officiel et a constaté qu'il n'y avait pas de description pertinente.
Regardons un exemple d'appel de plusieurs sous-étapes sur le thread principal:
//main.html <!!!! </ head> <div id = out> </ div> <input type = text name = id = txt> <button id = btn> send </ bouton> <script type = text / javascript> var out = document.getElementByid (Out); .PostMessage (postdata);}, false); out.innertext = e.data;}, false); </dcript> </body> </html> // thread1.jsonMessage = fonction (événement) {var res = event.data + beau! ; ;
Le thread principal nécessite deux threads pour effectuer une tâche. avec le résultat final, il s'affiche sur la page.
D'autres fichiers JS peuvent être introduits dans les sous-titres puis appelés, tels que l'exemple du côté inférieur.
//main.html <!!!! </ head> <div id = out> </ div> <input type = text name = id = txt> <button id = btn> send </ bouton> <script type = text / javascript> var out = document.getElementByid (Out); var b tn = document.getElementById (btn) ;; );}, False) ;; res = handler (event.data); }
On peut voir que notre thread1.js n'a pas de fichier appelé outils.js, mais il importe un fichier js via importationcripts (), puis vous pouvez appeler la méthode exposée.
Deuxièmement, classe partagéeL'essence de SharedWorker réside dans le partage.
Exemples directs à discuter.
Comment en utiliser un://main.html <!!!!! <Ead> <Title> Travailleurs partagés: Demo 1 </ Title> </ Head> <body> <div id = log> </div> <cript> var worker = new SharedWorker ('partagé.js'); Data;} </ script> </ body> </ html> // partagé.jsonConnect = fonction (e) {var port = e.ports [0];
Ceci est un exemple du W3C.
<! '' partagé.js '); . E.ports [0]; E.target.PostMessage ('pong');
La première méthode consiste à écouter l'événement du message en utilisant la poignée de l'événement. Ils sont différents du travailleur.
Alors, comment SharedWorker partage-t-il les données? Veuillez regarder l'exemple suivant.
// Main1 et main2 sont ainsi <!! = Nom de texte = id = txt> <bouton id = get> get </ button> <button id = set> setton> <cript> var worker = new partage worker ('shared.js'); (Get '); ) {Log.InnerText = E.Data;}, false); Worker.Port.Start (); Valeur);}, false); ) {var port = e.ports [0]; }}
Analyse ici, nous entrons dans les données dans la zone de texte de Main1.html, cliquez sur Définir, puis cliquez sur la méthode Get dans Main2.html pour obtenir les données que nous définissons dans les cas uniques de main1.html, tout comme la classe statique en Java, non importe le nombre de nouvelles, il n'y en a en fait qu'une seule, afin que nos différents threads puissent partager des données dans SharedWorker. Voici l'image.
Enfin, résumons, les travailleurs et les travailleurs partagés n'ont pas de suspension, c'est-à-dire, déplacez le travail devant la scène pour le faire dans les coulisses sans interrompre le travail devant la scène. C'est le So-Called Dix minutes sur la scène et dix ans de la scène. En descendant, seul le meilleur côté de votre meilleur côté est sur scène, dix minutes suffisent!