


Comment gérer plusieurs problèmes de concurrence dans les compétences JavaScript_javascript
Je rencontre souvent ce scénario lors de l'écriture de code : la page de chargement s'affiche lorsque la page est initialisée, plusieurs requêtes simultanées ajax sont lancées pour obtenir des données, et le chargement se termine au retour de chaque requête ajax.
Par exemple, une page pour passer une commande doit interroger des informations d'adresse communes, des informations sur le produit, des informations sur la ville... et ces requêtes sont asynchrones. On espère que l'utilisateur ne sera pas autorisé à fonctionner tant que toutes les données ne seront pas chargées. .
Un problème facile à rencontrer lors de la mise en œuvre de ce scénario est de savoir comment contrôler la simultanéité multiple ? Voici quelques solutions et idées :
Parallèle remplacé par série
Si la logique métier elle-même est série, mais que la méthode de requête fournie est asynchrone, vous pouvez envisager cette méthode.
Mais ce n’est évidemment pas le cas dans ce scénario. Cela réduit considérablement les performances de la page et prolonge la vitesse de chargement.
Rappel
Convient uniquement aux situations où le nombre de concurrences est faible. Plusieurs niveaux de rappels imbriqués réduiront considérablement la lisibilité du code
.function async1(){ //do sth... } function async2(){ //do sth... async1(); } async2();
ajax est passé à la synchronisation
Définissez le paramètre async sur false dans jquery
$.ajax({ url:"/jquery/test1.txt", async:false });
Définir le drapeau de fin
Une approche plus simple peut consister à configurer un compteur qui s'incrémente de 1 à chaque fois qu'une fonction asynchrone est terminée, ou à configurer un tableau et à mettre à jour le tableau à chaque fois qu'une fonction asynchrone est exécutée.
Nombre de rappels
var cnt = 0; function async1(){ //do sth... callback(); } function async2(){ //do sth... callback(); } function callback(){ cnt++; if(2==cnt) console.log('都已执行完毕'); }
Boucle bloquée
var cnt = 0; function async1(){ //do sth... cnt++; } function async2(){ //do sth... cnt++; } while(2>cnt){}
Boucle non bloquante
Il n'est pas recommandé de trop l'utiliser pour éviter d'affecter les performances
var cnt = 0; function async1(){ //do sth... cnt++; } function async2(){ //do sth... cnt++; } var interval = setInterval(function(){ if(2===cnt){ console.log('已执行完成'); clearInterval(interval) } }
Mise en œuvre d'un framework tiers
jquery
L'approche actuelle que j'utilise dans mon projet
var d1 = $.Deferred(); var d2 = $.Deferred(); function async1(){ d1.resolve( "Fish" ); } function async2(){ d2.resolve( "Pizza" ); } $.when( d1, d2 ).done(function ( v1, v2 ) { console.log( v1 + v2 + '已完成'); });
Le contenu ci-dessus est les connaissances pertinentes introduites par l'éditeur sur la façon de gérer plusieurs problèmes de concurrence en JavaScript. J'espère qu'il vous sera utile.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

Une fois que vous avez maîtrisé le didacticiel TypeScript de niveau d'entrée, vous devriez être en mesure d'écrire votre propre code dans un IDE qui prend en charge TypeScript et de le compiler en JavaScript. Ce tutoriel plongera dans divers types de données dans TypeScript. JavaScript a sept types de données: null, non défini, booléen, numéro, chaîne, symbole (introduit par ES6) et objet. TypeScript définit plus de types sur cette base, et ce tutoriel les couvrira tous en détail. Type de données nuls Comme javascript, null en typeScript

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

JavaScript peut être exécuté dans PowerPoint et peut être implémenté en appelant des fichiers JavaScript externes ou en intégrant des fichiers HTML via VBA. 1. Pour utiliser VBA pour appeler les fichiers JavaScript, vous devez activer les macros et avoir des connaissances en programmation VBA. 2. ENCHED des fichiers HTML contenant JavaScript, qui sont simples et faciles à utiliser mais sont soumis à des restrictions de sécurité. Les avantages incluent les fonctions étendues et la flexibilité, tandis que les inconvénients impliquent la sécurité, la compatibilité et la complexité. En pratique, l'attention doit être accordée à la sécurité, à la compatibilité, aux performances et à l'expérience utilisateur.
