Analyse d'instance de promesse en js
Tout le monde sait que nodejs est très rapide. Pourquoi est-il si rapide ? La raison est que node utilise des rappels asynchrones pour gérer les événements qui doivent être attendus, afin que le code continue de s'exécuter sans attendre quelque part. Mais il y a aussi un inconvénient. Lorsque nous avons de nombreux rappels, par exemple, après avoir exécuté ce rappel, nous devons exécuter le prochain rappel, puis exécuter le prochain rappel. Cela entraînera des couches d'imbrication et un code peu clair, ce qui est très difficile. . Il est facile d'entrer dans la « prison de rappel », ce qui peut facilement conduire à l'exemple suivant :
async(1, function(value){ async(value, function(value){ async(value, function(value){ async(value, function(value){ async(value, function(value){ async(value, final); }); }); }); }); });
Cette façon d'écrire fera s'effondrer les gens, alors y a-t-il un moyen de résoudre ce problème. problème, ou y a-t-il une autre façon d'écrire ? La réponse est oui. Le nouvel objet de promesse d'es6 et l'attente asynchrone d'es7 peuvent résoudre ce problème. Bien sûr, l'objet de promesse sera présenté ici en premier, et l'attente asynchrone d'es7 sera partagée dans les articles suivants. L'objet Promise sera présenté ci-dessous.
2. Introduction
Promise est un objet utilisé pour gérer les opérations asynchrones. Il nous permet d'écrire des appels asynchrones de manière plus élégante, plus belle et plus facile à lire. Comme son nom l'indique, cela signifie promesse, ce qui signifie qu'après avoir utilisé Promise, il nous donnera certainement une réponse, peu importe si cela réussit ou échoue, il nous donnera une réponse, nous n'avons donc pas à nous soucier de sa fuite. loin, haha. Par conséquent, Promise a trois états : en attente (en cours), résolu (terminé) et rejeté (échec). Seules les structures renvoyées de manière asynchrone peuvent changer d'état. Par conséquent, il n’existe généralement que deux processus de promesse : en attente-> résolu ou en attente-> rejeté.
L'objet promise a également une méthode then plus couramment utilisée, qui est utilisée pour exécuter la fonction de rappel. La méthode then accepte deux paramètres, le premier est un rappel résolu avec succès, l'autre est un rappel rejeté qui a échoué. et le deuxième paramètres de rappel facultatifs en cas d'échec. Et la méthode then peut également renvoyer un objet de promesse, afin qu'il puisse être appelé dans une chaîne. Ensuite, le code :
var Pro = function (time) { //返回一个Promise对象 return new Promise(function (resolve, reject) { console.log('123'); //模拟接口调用 setTimeout(function () { //这里告诉Promise 成功了,然后去执行then方法的第一个函数 resolve('成功返回'); }, time); }) }; (function(){ console.log('start'); Pro(3000) .then(function(data){ console.log(data); return Pro(5000);}) .then(function(data){ console.log(data); console.log('end'); }) })();
Dans le code ci-dessus, une variable Pro est définie, puis une fonction anonyme lui est assignée. La fonction renvoie un objet Promise, puis l'objet reçoit une fonction, et résoudre et suivre respectivement Lorsque la méthode de rejet est passée en paramètres, setTimeOut est utilisé pour simuler une requête asynchrone. Lorsque la méthode de résolution est exécutée, une fonction de la méthode then sera appelée. Les résultats sont les suivants :
3. API Promise
1, Promise.resolve()
2, Promise.reject()
3 , Promise.prototype.then()
4, Promise.prototype.catch()
5, Promise.all() // Tous sont terminés, équivalent à
6, Promise.race( ) // Complétez-en simplement un, ce qui équivaut à ou
1. La fonction de Promise.resolve() est de convertir l'objet existant en un objet Promise résolul;Promise.resolve('test')==new. Promise(resolve =>resolve('test'))
2. Promise.reject() renvoie également un objet Promise, le statut est rejeté
3. introduit ci-dessus, le voici Plus d'introduction.
4. catch() : fonction de rappel lorsqu'une erreur se produit.
5. Promise.all() convient pour exécuter then() avec succès une fois que tous les résultats sont terminés. Par exemple :
let p1 =new Promise(function(resolve,reject){ resolve(1); }); let p2 = new Promise(function(resolve,reject){ resolve(2); }); let p3 = new Promise(function(resolve,reject){ resolve(3); }); Promise.all([p1, p2, p3]).then(function (results) { console.log('success:'+results); }).catch(function(r){ console.log("error"); console.log(r); });
Sortie finale :
6. La fonction de Promise.race() est d'exécuter plusieurs instances en même temps, tant qu'il y en a un. Lorsqu'une instance change d'état, la promesse est remplacée par l'état modifié de cette instance
IV Exemple
var Pro = function () { //返回一个Promise对象 return new Promise(function (resolve, reject) { //模拟接口调用 setTimeout(function () { resolve(true); }, 1000); }) }; var Pro2 = function () { //返回一个Promise对象 return new Promise(function (resolve, reject) { //模拟接口调用 setTimeout(function () { resolve('Pro2成功执行'); }, 1000); }) }; Pro().then(function(data){ var val = data; console.log(val) if (val) { console.log(1111) return Pro2() } }).then(function(data1){ console.log(data1) })
Sortie :
.
De cette façon, vous pouvez utiliser la méthode then pour implémenter des appels en chaîne.
Recommandations associées :
Explication détaillée de l'extension ES6 Promise toujours instance de méthode
Comment utiliser correctement la promesse de jQuery
Explication détaillée de l'exécution séquentielle de promsie.all et promise
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!

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)

Comment utiliser WebSocket et JavaScript pour mettre en œuvre un système de reconnaissance vocale en ligne Introduction : Avec le développement continu de la technologie, la technologie de reconnaissance vocale est devenue une partie importante du domaine de l'intelligence artificielle. Le système de reconnaissance vocale en ligne basé sur WebSocket et JavaScript présente les caractéristiques d'une faible latence, d'un temps réel et d'une multiplateforme, et est devenu une solution largement utilisée. Cet article explique comment utiliser WebSocket et JavaScript pour implémenter un système de reconnaissance vocale en ligne.

WebSocket et JavaScript : technologies clés pour réaliser des systèmes de surveillance en temps réel Introduction : Avec le développement rapide de la technologie Internet, les systèmes de surveillance en temps réel ont été largement utilisés dans divers domaines. L'une des technologies clés pour réaliser une surveillance en temps réel est la combinaison de WebSocket et de JavaScript. Cet article présentera l'application de WebSocket et JavaScript dans les systèmes de surveillance en temps réel, donnera des exemples de code et expliquera leurs principes de mise en œuvre en détail. 1. Technologie WebSocket

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

JavaScript et WebSocket : Construire un système efficace de prévisions météorologiques en temps réel Introduction : Aujourd'hui, la précision des prévisions météorologiques revêt une grande importance pour la vie quotidienne et la prise de décision. À mesure que la technologie évolue, nous pouvons fournir des prévisions météorologiques plus précises et plus fiables en obtenant des données météorologiques en temps réel. Dans cet article, nous apprendrons comment utiliser la technologie JavaScript et WebSocket pour créer un système efficace de prévisions météorologiques en temps réel. Cet article démontrera le processus de mise en œuvre à travers des exemples de code spécifiques. Nous

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

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

Golang est un langage de programmation puissant et efficace qui peut être utilisé pour développer diverses applications et services. Dans Golang, les pointeurs sont un concept très important, qui peut nous aider à exploiter les données de manière plus flexible et plus efficace. La conversion de pointeur fait référence au processus d'opérations de pointeur entre différents types. Cet article utilisera des exemples spécifiques pour découvrir les meilleures pratiques de conversion de pointeur dans Golang. 1. Concepts de base Dans Golang, chaque variable a une adresse, et l'adresse est l'emplacement de la variable en mémoire.

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
