Programmation asynchrone Java scirp, développement frontal de base

Maître des armes Java 2021-09-15 07:47:10
programmation asynchrone java scirp veloppement


  • 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://javamana.com/2021/09/20210914163704609U.html

  1. 小白也能看懂的dubbo3应用级服务发现详解
  2. SpringBoot异步使用@Async原理及线程池配置
  3. Questions d'entrevue de test avancé de Dachang, liste des compétences de base de l'entrevue Java,
  4. SpringBoot异步使用@Async原理及線程池配置
  5. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  6. Détails de la découverte du Service d'application Dubbo 3 que Xiaobai peut également comprendre
  7. Springboot utilise asynchrone le principe @ async et la configuration du pool de threads
  8. 如何强大且优雅的搞定Linux文件系统,算法题 JVM,
  9. 太牛了,阿里P7架构师带你看透maven的来龙去脉,
  10. Oracle central et Oracle décentralisé
  11. java JavaBean
  12. Java wrapper type
  13. Java super keyword
  14. Java static keyword
  15. Java this keyword
  16. Java interface
  17. 太牛了,阿裏P7架構師帶你看透maven的來龍去脈,
  18. C'est génial, l'architecte Ali p7 vous montre à travers Maven.
  19. Comment traiter le système de fichiers Linux avec puissance et élégance, algorithme JVM,
  20. Java + SSM Social Insurance Pension System for Computer Graduation Design
  21. Usage of Java scanner
  22. Java inheritance
  23. Java method review
  24. java JVM
  25. Java Basics
  26. Java file operation object IO stream
  27. Java console reads multi character input and output
  28. Java simple array sorting
  29. In addition to MySQL master-slave, you have another choice, Galera
  30. Configuration standard dockerfile et docker-composer.yml
  31. 字节大神强推千页PDF学习笔记,2021Java开发学习路线,
  32. 字节大牛耗时八个月又一力作,靠这份Java知识点PDF成功跳槽,
  33. 字节大牛教你手撕Java学习,最新大厂程序员进阶宝典,
  34. Comment l'automne est - il beau?Ces 24 ensembles de modèles d'automne et d'hiver sont grands, minces et vieillissants
  35. 字節大牛教你手撕Java學習,最新大廠程序員進階寶典,
  36. 字節大牛耗時八個月又一力作,靠這份Java知識點PDF成功跳槽,
  37. Byte Bull vous apprend à déchiqueter Java à la main, le dernier dictionnaire avancé des programmeurs de grandes usines,
  38. Byte Bull a pris huit mois à travailler dur et a réussi à changer d'emploi avec ce PDF Java Knowledge point.
  39. Byte God Push 1000 pages PDF Learning notes, 2021 Java Development Learning route,
  40. Five minutes to understand MySQL index push down
  41. Spring中@within与@target的一些区别
  42. 力荐:提高千倍效率的一些 Java 代码小技巧
  43. Redis技术专题系列之帮你从底层彻底吃透RDB技术原理(基础篇)
  44. Juan Benet et vitalik buterin discutent des réflexions sur les médias sociaux décentralisés
  45. Ipfs Weekly Report 152 | pinata launched "submarining"
  46. Performance optimization issue 03 - HTTP request optimization
  47. JavaScript genrator generator
  48. 字节跳动Java面试全套真题解析在互联网火了,面试大厂应该注意哪些问题?
  49. 字节跳动Java社招,2021年阿里 腾讯 快手offer都已拿到!
  50. 用Java实现红黑树
  51. 使用Redis Stream来做消息队列和在Asp.Net Core中的实现
  52. 海量列式非关系数据库HBase 架构,shell与API
  53. Redis Technology Topic Series vous aide à comprendre les principes de la technologie rdb du Bas (Basic)
  54. Conseils: quelques conseils pour améliorer l'efficacité du Code Java
  55. Quelques différences entre @ within et @ Target au printemps
  56. 海量列式非關系數據庫HBase 架構,shell與API
  57. Architecture, Shell et API de base de données non relationnelle à grande échelle
  58. Mise en œuvre de l'arbre Rouge et noir en Java
  59. Byte Hopping Java Service Call, 2021 Alibaba Tencent Express offer a été obtenu!
  60. Byte Jump Java interview Full Set of true Problems Analysis in Internet fire, interview Factory should pay attention to what Problems?