


Spécifications d'écriture de code de programmation asynchrone JavaScript Promesse notes d'étude_compétences Javascript
Mon travail est devenu un peu plus facile récemment, et je me suis souvenu d'un mot promesse que je voyais toujours auparavant, alors je l'ai patiemment étudié pendant un moment.
1 : Qu'est-ce que la promesse ? Pourquoi y a-t-il cette chose ?
Tout d'abord, Promise a été créé pour résoudre le problème de l'écriture de code en programmation asynchrone javascript.
Avec le développement de JavaScript, les scénarios asynchrones se multiplient. Le front-end a AJAX, setTimeout, etc., et le nœud back-end est plus asynchrone. Selon l'approche traditionnelle, divers rappels sont intégrés dans les rappels. Le code peut prêter à confusion.
À cette époque, la communauté CommonJS proposait une spécification appelée Promise/A, qui définit comment écrire du code asynchrone, notamment en utilisant when/then/resolve, etc. pour organiser le code asynchrone.
Parce que cette spécification est très élégante, de nombreuses personnes l'ont implémentée, notamment Promise() supportée nativement par les navigateurs, différée dans jQuery, when.js, etc.
Puisque ces bibliothèques sont toutes conformes à cette spécification, il suffit d’en apprendre une. J'ai principalement appris le différé de jQuery, donc cet article parle principalement de cette implémentation.
Deux : le différé de jQuery
Tout d'abord, concernant les objets différés, le professeur Ruan Yifeng a écrit un article très détaillé, l'adresse est ici. Il est recommandé de lire d'abord son article, puis de continuer à lire.
Comme mentionné ci-dessus, les promesses sont utilisées pour résoudre des problèmes asynchrones (comme ajax), comparons donc leurs différences.
La méthode d'écriture jQuery AJAX classique est
$.ajax({
Tapez : "obtenir",
URL : "",
Succès : fonction () {},
erreur ; fonction () {}
});
Les paramètres de réussite et d'erreur sont les fonctions de rappel en cas de succès/échec.
Et maintenant, la méthode d'écriture AJAX de jQuery est devenue
$.ajax({
Tapez : "obtenir",
URL : ""
}).done(function () {}).fail(function () {});
Après le succès, la fonction en done sera appelée, et en cas d'échec, la fonction en fail sera appelée.
Quand vous voyez cela, vous vous posez peut-être des questions. Sur quel objet se trouvent les méthodes done/fail ? Quel objet $.ajax() renvoie-t-il et pourquoi existe-t-il ces deux méthodes ?
La réponse réside dans l'objet différé présenté ci-dessous.
jQuery propose un nouveau type Deferred. Généré via $.Deferred(). Par exemple
var def = $.Deferred();
Cette définition hérite de nombreuses méthodes, notamment done/fail/resolve/reject, etc.
Nous savons donc ici également que $.ajax() ci-dessus renvoie réellement cet objet.
Les objets différés ont de nombreuses méthodes. En voici quelques-unes couramment utilisées. Pour plus d'informations, veuillez vous référer à l'API
.
La première chose est de générer naturellement un objet def. Il existe de nombreuses méthodes ici, telles que :
var def = $.Deferred(); // Générez-le vous-même
$.ajax({}); // La méthode ajax renvoie également un objet def
$.when(); // la méthode when renverra également un objet def
Ici, $.when() peut être discuté séparément. Cette méthode reçoit généralement un ou plusieurs objets différés, puis détermine l'état de l'objet renvoyé par $.when() en fonction de l'état de ces objets différés. Un scénario d'utilisation concerne plusieurs requêtes ajax. Si l'une d'entre elles échoue, elles seront toutes considérées comme des échecs. Vous pouvez ensuite transmettre plusieurs méthodes ajax dans $.when(), telles que $.when($.ajax(), $. ajax()). Ensuite, $.when renverra un objet def (jugé en fonction des résultats de ces deux requêtes).
Ensuite après avoir obtenu l'objet def, il existe une série de méthodes pour changer l'état de cet objet
def.resolve(); // Définit l'objet def sur terminé, puis la fonction liée dans def.done() sera exécutée immédiatement.
def.reject(); // Définit l'objet def comme ayant échoué, puis la fonction liée dans def.fail() sera exécutée immédiatement.
def.notify(); // Lorsque l'objet def est exécuté, le rappel correspondant est def.progress().
L'étape suivante consiste à définir la méthode de rappel. L'ordre correspond à ce qui précède, c'est-à-dire quel rappel sera appelé dans quel état
def.done(); // Correspond à def.resolve();
def.fail(); // Correspond à def.reject();
def.progress(); // Correspond à def.notify();
// Spécial
def.always(); // Sera appelé en cas de succès ou d'échec
def.then(); // Accepte plusieurs fonctions, dans l'ordre : succès (terminé), échec (échec) et progression (progrès)
En fait, à ce stade, l'utilisation des objets différés est presque la même. Cependant, jQuery propose également plusieurs API
// Vérifiez la classe d'état actuelle
def.isRejected();
def.isResolved();
def.state();
Comme les noms de ces API le suggèrent, je n'entrerai pas dans les détails. Pour plus de détails, vous pouvez consulter la documentation de l'API jQuery donnée ci-dessus.
Il existe une autre méthode, c'est-à-dire que parfois nous voulons donner un objet def externe, puis cet objet peut définir des rappels pour différents états, mais ne peut pas changer son état, alors nous pouvons utiliser
def.promise();
Renvoie un objet promise, qui est un sous-ensemble de l'objet différé. Vous pouvez utiliser done/fail et d'autres méthodes. Il n'y a pas de résolution/rejet et d'autres méthodes. Il s'agit principalement de protéger l'état de l'objet def. modifié par l'extérieur.
À ce stade, j'ai fini de parler de promesses. Vous pouvez désormais l'utiliser dans vos propres projets. De plus, je vous souhaite à tous une bonne année par avance et vous souhaite à tous une année prospère du Mouton^ ^.

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)

Résumé : La programmation asynchrone en C++ permet d'effectuer plusieurs tâches sans attendre des opérations fastidieuses. Utilisez des pointeurs de fonction pour créer des pointeurs vers des fonctions. La fonction de rappel est appelée lorsque l'opération asynchrone est terminée. Les bibliothèques telles que boost::asio fournissent un support de programmation asynchrone. Le cas pratique montre comment utiliser les pointeurs de fonction et boost::asio pour implémenter des requêtes réseau asynchrones.

Dans la vie quotidienne, nous rencontrons souvent des problèmes entre promesses et réalisation. Que ce soit dans une relation personnelle ou dans une transaction commerciale, tenir ses promesses est essentiel pour instaurer la confiance. Cependant, les avantages et les inconvénients de l’engagement sont souvent controversés. Cet article explorera les avantages et les inconvénients des engagements et donnera quelques conseils sur la façon de tenir parole. Les avantages promis sont évidents. Premièrement, l’engagement renforce la confiance. Lorsqu’une personne tient parole, elle fait croire aux autres qu’elle est une personne digne de confiance. La confiance est le lien établi entre les personnes, qui peut les rendre plus

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

3 problèmes et solutions courants dans la programmation asynchrone dans les frameworks Java : Callback Hell : utilisez Promise ou CompletableFuture pour gérer les rappels dans un style plus intuitif. Conflit de ressources : utilisez des primitives de synchronisation (telles que des verrous) pour protéger les ressources partagées et envisagez d'utiliser des collections thread-safe (telles que ConcurrentHashMap). Exceptions non gérées : gérez explicitement les exceptions dans les tâches et utilisez un cadre de gestion des exceptions (tel que CompletableFuture.exceptionally()) pour gérer les exceptions.

Une explication détaillée de Promise.resolve() nécessite des exemples de code spécifiques. Promise est un mécanisme en JavaScript pour gérer les opérations asynchrones. Dans le développement réel, il est souvent nécessaire de traiter certaines tâches asynchrones qui doivent être exécutées dans l'ordre, et la méthode Promise.resolve() est utilisée pour renvoyer un objet Promise qui a été rempli. Promise.resolve() est une méthode statique de la classe Promise, qui accepte un

Le framework Go utilise les fonctionnalités de concurrence et asynchrones de Go pour fournir un mécanisme permettant de gérer efficacement les tâches simultanées et asynchrones : 1. La concurrence est obtenue via Goroutine, permettant d'exécuter plusieurs tâches en même temps. 2. La programmation asynchrone est implémentée via des canaux, qui peut être exécuté sans bloquer le thread principal;3. Convient aux scénarios pratiques, tels que le traitement simultané des requêtes HTTP, l'acquisition asynchrone des données de base de données, etc.

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

Les avantages de la programmation asynchrone en PHP incluent un débit plus élevé, une latence plus faible, une meilleure utilisation des ressources et une évolutivité. Les inconvénients incluent la complexité, la difficulté de débogage et la prise en charge limitée des bibliothèques. Dans le cas réel, ReactPHP est utilisé pour gérer les connexions WebSocket, démontrant l'application pratique de la programmation asynchrone.
