Maison  >  Article  >  interface Web  >  Introduction détaillée à Promise dans es6

Introduction détaillée à Promise dans es6

零下一度
零下一度original
2017-06-26 15:23:451808parcourir

Promise

  1. Promise est un objet à partir duquel des messages pour des opérations asynchrones peuvent être obtenus

  2. Caractéristiques : L'état de l'objet est ; non affecté par l'impact du monde extérieur (En attente en cours, Résolu terminé, Échec rejeté), seul le résultat de l'opération asynchrone peut déterminer l'état actuel une fois que l'état change, il ne changera plus (uniquement de En attente à Résolu et En attente à Résolu ; Rejeté);

  3. Inconvénients : Une fois créé, il sera exécuté immédiatement et ne pourra pas être annulé à mi-chemin s'il n'y a pas de fonction de rappel, les erreurs générées en interne ne peuvent pas être reflétées en externe lorsqu'elles sont en attente ; , il est impossible de savoir à quelle étape se trouve la progression actuelle ;

  4. Généralement, ne définissez pas la fonction de rappel de l'état Reject dans la méthode then (c'est-à-dire le deuxième paramètre de then) , mais utilisez la méthode catch ; car cela peut capturer les erreurs dans le then précédent, et la méthode Plus proche de l'écriture synchrone (try/catch)

  5. catch renvoie une promesse. objet, vous pouvez donc également appeler la méthode then plus tard ; dans la méthode catch, cela peut également générer une erreur

  6. La méthode Promise.all est utilisée pour empaqueter plusieurs instances Promise dans une nouvelle Instance Promise ; les paramètres de la méthode Promise.all ne peuvent pas être des tableaux, mais doivent avoir une interface Iterator, et chaque membre renvoyé est une instance Promise uniquement lorsque les états p1, p2, p3 sont remplis, l'état p deviendra ; rempli ; tant qu'il y en a une rejetée, p deviendra rejeté

  7. Promise.race encapsule également plusieurs instances de Promise dans une nouvelle Promise tant que l'état d'un objet change ; l'état de p changera en conséquence, et la valeur du premier objet modifié sera renvoyée et transmise à la fonction de rappel de p

  8. Promise.resolve convertit l'objet en objet Promise, et le statut est résolu

    // 将thenable对象转为Promise对象var thenable = {
        then(resolve, reject) {
            resolve(200)
        }
    }var p = Promise.resolve(thenable)
    
    p.then((data) => {
      console.log(data)
    })  // 200
  9. Promise .reject renvoie un objet Promise, et le statut de l'instance est rejeté ; restent inchangés comme motif de rejet et deviennent les paramètres des méthodes ultérieures.

  10. Deux méthodes supplémentaires

    // donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected)
            .catch(function(reason) {
                setTimeout(() => {throw reason}, 0)   
            });
    };// finallyPromise.prototype.finally = function (callback) {
        let P = this.constructor;return this.then(
            value  => P.resolve(callback()).then(() => value),
            reason => P.resolve(callback()).then(() => { throw reason })
        );
    };

    done sont utilisées pour capturer les erreurs qui peuvent survenir à tout moment et les lancer globalement ;
    finally est utilisé pour les opérations qui seront exécutées quel que soit l'état de l'objet Promise. Il accepte une fonction de rappel commune comme paramètre (doit être exécuté) ;

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!

Déclaration:
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