L'environnement d'exécution du langage JS est « monothread ». Pourquoi la programmation asynchrone se produit-elle ?
Un seul fil de discussion signifie qu'une seule tâche peut être effectuée à la fois. S'il y a plusieurs tâches, elles doivent être mises en file d'attente et attendre que la tâche précédente soit terminée avant de pouvoir exécuter la tâche suivante.
Deux modes d'exécution des tâches : synchrone et asynchrone
"Mode asynchrone" :
La fonction de rappel est la méthode la plus basique de programmation asynchrone. Chaque tâche a une ou plusieurs fonctions de rappel.Une fois la tâche précédente exécutée, la tâche suivante n'est pas exécutée, mais la fonction de rappel est exécutée une fois la tâche précédente terminée, donc l'ordre d'exécution du programme est. cohérent avec la tâche. L’ordre de tri est incohérent et asynchrone.
Quatre méthodes de programmation asynchrone :
1. Fonction de rappel
Il s'agit de la méthode la plus basique de programmation asynchrone.
Supposons qu'il y ait deux fonctions f1 et f2, et que cette dernière attend le résultat de l'exécution de la première.
Si f1 est une tâche fastidieuse, vous pouvez écrire f2 comme fonction de rappel de f1.
function f1(callback){ setTimeout(function(){ //f1的任务代码 callback(); },1000); }Copier après la connexion
Exécuter le code
f1(f2)
L'avantage d'utiliser cette méthode est qu'elle est simple et facile à comprendre et à déployer. L'inconvénient est qu'elle n'est pas propice à la lecture et à la maintenance du code. Les différentes parties sont fortement couplées, le processus sera très déroutant et une seule. une fonction de rappel peut être spécifiée pour chaque tâche.
2. Surveillance des événements
Adoptez le mode piloté par les événements. L'exécution d'une tâche ne dépend pas de l'ordre du code, mais de la survenance d'un événement.
Tout d'abord, liez un événement à f1 (en utilisant la méthode d'écriture jQuery).
f1.on(‘done’,f2); //当f1发生done事件,就执行f2。然后对f1进行改写:Copier après la connexion
est le suivant :
fuction f1(){ setTimeout(function(){ //f1的任务代码 f1.trigger(‘done’); },1000); }Copier après la connexion
f1.tigger('done') signifie qu'une fois l'exécution terminée, l'événement done est déclenché immédiatement, commençant ainsi l'exécution de f2.
Les avantages de cette méthode sont : elle est facile à comprendre, peut lier plusieurs événements, chaque événement peut spécifier plusieurs fonctions de rappel et peut être découplé, ce qui est propice à la modularisation.
Inconvénients : l'ensemble du programme doit être piloté par des événements et le processus en cours deviendra très flou.
Recommandations associées :
Introduction à 4 méthodes de programmation asynchrone Javascript
Introduction aux méthodes de programmation asynchrone Javascript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!