编程知识 cdmana.com

Programmation asynchrone Java scirp, développement frontal de base

  • L'exécution de la tâche dans le fil principal est vide,Oui.Event QueueLire la fonction correspondante,Aller au thread principal pour exécuter.

  • Le processus ci - dessus se répète sans cesse,C'est ce qu'on dit souvent.Event Loop(Cycle des événements).

Les tâches asynchrones sont généralement divisées en tâches macro et micro,La différence est que:

  • macro-task(Tâche macro)Y compris le code global script,setTimeout,setInterval,setImmediate(node.js,?MessageChannel postMessage? requestAnimationFrame I/OFonctionnement UIRendre.

? ? ? ? En général JS Tâche de rappel résultant de la communication entre le moteur et l'environnement hôte,Par exemple, setTimeout,setInterval C'est le navigateur qui a chronométré,Où le temps d'exécution de la fonction de rappel nécessite une notification du navigateur à JS Moteur,Module réseau, I/OLes rappels de communication traités sont également.Contient setTimeout,setInterval,DOMRappel de l'événement,ajaxRappel après la fin de la demande,Total script Code,setImmediate.

  • Microtâche(micro-task):En général, les callbacks générés par l'exécution d'une macro - tâche dans un thread,Par exemple: Promise,process.nextTick,Object.observe(Abandonné), MutationObserver(DOMÉcouter),C'est tout. JS Le moteur lui - même peut écouter un rappel .

Ci - dessus, nous avons appris la classification des tâches macro et micro , Alors pourquoi les diviser en tâches macro et micro ? Principalement parce qu'il est ajouté à une file d'attente de tâches dans une boucle d'événements avec un mécanisme différent .

Dans le cycle des événements, Les tâches sont généralement commencées par des tâches macro (JS Exécution du chargement du Code ), Pendant l'exécution de la tâche macro , De nouvelles tâches macro et micro peuvent être générées , À ce stade, la tâche macro (Par exemple:ajaxRappel) Sera ajouté à la fin de la file d'attente des tâches en attendant l'exécution du mécanisme de boucle d'événements , Les micro - tâches sont ajoutées à l'avant de la file d'attente des tâches courante , C'est aussi l'exécution du mécanisme de boucle d'événements d'attente .

Où le même type de macro - tâche ou de micro - tâche est trié par ordre de rappel , Et les tâches de différents types de tâches auront une certaine priorité , Différencier par différents types de tâches

JavascirpProgrammation asynchrone,Développement de la base frontale_Front End

Au total, c'est ,Javascript Pendant l'exécution du Code , Synchrone avant asynchrone , Pendant l'exécution asynchrone , Micro - tâche avant macro - tâche .

Ordre général des tâches : Tâche de macro - exécution avancée (Il peut y en avoir plusieurs.)-> Microtâche -> Tâche macro -> Microtâche ···

? Cet exemple comprend les bases js Le mécanisme d'exécution est compris


console.log(1);

setTimeout(function() {

    console.log(2);

})

var promise = new Promise(function(resolve, reject) {

    console.log(3);

    resolve();

})

promise.then(function() {

    console.log(4);

})

console.log(5);


     
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

Dans l'exemple,setTimeout Et Promise Appelé la source de la tâche , Les fonctions de rappel enregistrées à partir de différentes sources de tâches sont placées dans différentes files d'attente de tâches .

Avec le concept de macro - tâche et de micro - tâche ,C'est... JS Quel est l'ordre d'exécution de ? Macro ou micro - tâche d'abord ?

Dans le premier cycle d'événements ,JavaScript Le moteur va tout script Le Code est exécuté comme une macro - tâche ,Une fois l'exécution terminée, Vérifiez si la micro - tâche est trouvée dans ce cycle , Lisez à partir de la file d'attente des micro - tâches pour exécuter toutes les micro - tâches si elles existent , Lire à nouveau l'exécution des tâches dans la file d'attente des tâches pour la macro - tâche ,Et effectuer toutes les micro - tâches,Comme ça..JS L'ordre d'exécution de est la macro - tâche dans chaque cycle d'événements -Microtâche.

  • Dans l'exemple ci - dessus,Premier cycle d'événements, L'ensemble du Code est entré dans le thread principal en tant que macro - tâche pour effectuer la première sortie 1,RencontrePromise,new PromiseExécution directe,Produits3,,Et puis5.

  • Rencontre Promise,Oui. then La fonction est placée dans la micro - tâche de la micro - tâche Event QueueMoyenne.

  • J'ai rencontré setTimeout , Attendre que le temps spécifié soit écoulé pour mettre la fonction de rappel dans la file d'attente des tâches de macro .

  • Une fois le cycle complet de l'événement terminé , Pour détecter la présence d'une tâche dans la file d'attente de la micro - tâche , Exécution en présence .

Enfin

Les connaissances de base sont nécessaires au début , Si vous êtes dans les bases de ce renversement , Même si tu joues encore 6,webpack、git、node Il n'y a rien de bon à apprendre , Parce que l'autre personne ne te donnera plus l'occasion de te montrer , Ne manquez jamais votre entreprise agréable à cause de la Fondation . Les bases du Front End sont complexes et nombreuses , Ce n'est pas comprendre okC'est, Il y en a qui doivent vraiment se souvenir . Bien sûr qu'on est des vaches xIngénieur de première ligne, Il n'est pas nécessaire de mémoriser un point de connaissance comme un mot anglais tous les jours , Tant que vous faites plus attention au résumé , Il suffit de brosser les questions avant l'entrevue .

 CodeChinaProjet Open Source:【Analyse des questions d'entrevue de première ligne de Dachang+Résumé de base notes d'étude+Projets réels en action+Dernière vidéo d'explication】

版权声明
本文为[Maître des armes Java]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210914163704609U.html

Scroll to Top