Maison > interface Web > js tutoriel > le corps du texte

En savoir plus sur Promise dans ES6

hzc
Libérer: 2020-06-29 10:25:27
avant
2277 Les gens l'ont consulté

Le début de Promise

En raison du mécanisme asynchrone de JavaScript, un problème courant est la pyramide de rappel :

loadImg('a.jpg', function() {
    loadImg('b.jpg', function() {
        loadImg('c.jpg', function() {
            console.log('all done!');
        });
    });
});
Copier après la connexion

Promise Littéralement, promesse. Si A appelle B et que B renvoie une promesse à A, alors A peut écrire le plan comme ceci : Lorsque B me renvoie le résultat, A exécute le plan S1. Sinon, si B ne donne pas à A le résultat qu'il souhaite pour certains. raison, alors A exécute le plan d'urgence S2. Dans ce cas, tous les risques potentiels sont sous le contrôle de A

var resB = B();
var runA = function(){
   resB.then(execS1,execS2);
};
Copier après la connexion

Si A veut terminer quelque chose, il ne peut pas compter sur une réponse de B, alors le code ci-dessus changera. Cheng

var resB = B();
var resC = C();
...
 
var runA = function() {
    reqB
        .then(resC, execS2)
        .then(resD, execS3)
        .then(resE, execS4)
        ...
        .then(execS1);
};
 
runA();
Copier après la connexion

Ici, chaque fois qu'un interrogateur donne une réponse inattendue, un mécanisme de traitement différent est utilisé, bien que la spécification Promise ne l'exige pas, et même aucun traitement n'est requis, c'est-à-dire (Ne pas passer). dans le deuxième paramètre de then), ou la gérer uniformément

Spécification Promesse/A+

  • Une promesse peut avoir trois états : en attente( en attente), complété(exécuté), rejeté(rejeté)

  • Le statut d'une Promesse ne peut changer que de "en attente" "Aller à "Complete" ou "Reject", ne peut pas être inversé

  • La promesse doit implémenter la méthode then, (then est le cœur de la promesse), puis doit renvoyer un promesse, la même promesse peut alors être appelée plusieurs fois et les rappels sont exécutés dans le même ordre que celui dans lequel ils sont définis.

  • La méthode then accepte deux paramètres. Le premier paramètre est un rappel en cas de succès, et l'autre est un rappel en cas d'échec. Then peut accepter une autre promesse transmise et accepte également un ". class then" objet ou méthode, c'est-à-dire un objet puisable

promesse standard

peut faire référence à cet article Les promesses JavaScript de html5rocks. Actuellement, les navigateurs avancés tels que Chrome et Firefox a L'objet Promise a été intégré, fournissant plus d'interfaces d'opération, telles que Promise.all()
, qui prend en charge la transmission d'un tableau de promesses, puis est exécuté lorsque toutes les promesses sont terminées. capture d'exceptions conviviale et puissante à gérer. Cela devrait suffire pour la programmation asynchrone quotidienne.

Promise des bibliothèques tierces

La plupart des bibliothèques js populaires aujourd'hui implémentent Promise à des degrés divers, comme dojo, jQuery, Zepto, when.js, Q, etc., mais elles ne sont exposés que La plupart de ce qui sort sont des objets Deferred
,

Ending

Nous voyons que peu importe la complexité de l'implémentation de Promise, son utilisation est très simple et le code organisé C'est très clair. Désormais, ce n'est plus nécessaire. Je suis torturé par les rappels.
Enfin, les promesses sont si élégantes ! Mais Promise ne résout que le problème de l'imbrication profonde des rappels. Ce qui simplifie vraiment la programmation asynchrone JavaScript, c'est Generator. Du côté de Node.js, il est recommandé d'envisager Generator.

Tutoriel recommandé : "Tutoriel JS"

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!

Étiquettes associées:
source:jianshu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal