Maison > interface Web > js tutoriel > Explication détaillée des instances d'objet Promise dans js

Explication détaillée des instances d'objet Promise dans js

小云云
Libérer: 2018-03-06 14:02:21
original
2414 Les gens l'ont consulté

Supposons que j'aie maintenant une page de vérification du nom réel qui doit vérifier le numéro d'identification et le vrai nom. La vérification du nom réel est vérifiée par le système du ministère de la Sécurité publique (en supposant qu'elle soit vérifiée au préalable). la vérification est réussie, je vais enregistrer les informations actuelles du formulaire et me les soumettre en arrière-plan

La méthode 1 ne nécessite pas de promesse

//外层ajax,校验实名信息$.ajax({
   type: "POST",
   url: "公安部检验真实姓名和身份证接口",
   dataType:"json",
   data: {name:"王尼玛",idCardNo:"4405************6543"},
   success: function(msg){     
     if(msg.status)
     {        //真实姓名、身份证号码验证通过,提交表单数据到本系统后台
        $.ajax({
           type: "POST",
           url: "/my/info.php", //本系统后台地址
           dataType:"json",
           data: {表单数据},
           success: function(msg){     
             if(msg.success)
             {                //保存成功              
             }             else
             {                //保存失败
             }
           }
        });
     }     else
     {        //真实姓名、身份证号码错误
     }
   }
});
Copier après la connexion
Nous pouvons clairement voir que l'exemple ci-dessus nécessite une implémentation ajax imbriquée. Dans les exigences réelles, tout code ajax imbriqué sera très difficile à lire (plusieurs couches sont encore plus difficiles, bien sûr, certaines personnes utiliseront une implémentation ajax synchrone). , mais lorsque des requêtes ajax synchrones sont effectuées, la page utilisateur aura l'impression d'être morte [rire et pleurer] 】;

La méthode 2 utilise la promesse

 new Promise(function (resolve, reject) {
            $.ajax({
                type: "POST",
                url: "公安部检验真实姓名和身份证接口",
                dataType: "json",
                data: { name: "王尼玛", idCardNo: "4405************6543" },
                success: function (msg) {
                    if (msg.status) {
                        resolve(msg); //真实姓名、身份证号码通过验证,msg会传入then方法的第一个方法参数
                    }                    else {
                        reject(msg); //真实姓名、身份证号码未通过验证,msg会传入then方法的第二个方法参数
                    }
                }
            });
        }).then(function (resolveMsg) {
            $.ajax({
                type: "POST",
                url: "/my/info.php", //本系统后台地址
                dataType: "json",
                data: { "表单数据": "表单数据" },
                success: function (msg) {
                    if (msg.success) {                        //保存成功              
                    }                    else {                        //保存失败
                    }
                }
            });
        }
        , function (rejectMsg) {
            //真实姓名、身份证号码错误
        });
Copier après la connexion

Résumé Permettez-moi d'abord de parler de la conclusion : Promise convient au rappel ajax asynchrone imbriqué multicouche

Évidemment, différent de l'ajax imbriqué de la première méthode, la structure de promesse ; de la méthode deux est plus claire, surtout après plusieurs niveaux d'imbrication, les avantages de la méthode deux sont plus évidents, après plusieurs niveaux d'imbrication, la première méthode deviendra un gros gâchis et très difficile à comprendre. Les promesses de la deuxième méthode peuvent être utilisées :

.

new Promise().then()
    .then()
    .then()
    .catch();
Copier après la connexion
format, la structure est très claire

Recommandations associées :


Tutoriel sur l'utilisation de base de Promise

Utiliser Promise pour simplifier les rappels

Analyse des instances de promesse en 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:php.cn
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