Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erläuterung der Promise-Objektinstanzen in js

Detaillierte Erläuterung der Promise-Objektinstanzen in js

小云云
小云云Original
2018-03-06 14:02:212378Durchsuche

Angenommen, ich habe jetzt eine Seite zur Überprüfung des echten Namens, auf der die ID-Nummer und der echte Name überprüft werden müssen. Die Überprüfung des echten Namens wird vom System des Ministeriums für öffentliche Sicherheit überprüft (vorausgesetzt, sie wird im Frontend überprüft). Wenn die Überprüfung erfolgreich ist, speichere ich die aktuellen Formularinformationen und übermittle sie im Hintergrund. Für Methode 1 ist kein Versprechen erforderlich.

Wir können deutlich sehen, dass das obige Beispiel eine verschachtelte Ajax-Implementierung erfordert. In tatsächlichen Anforderungen ist jeder verschachtelte Ajax-Code sehr schwer zu lesen (mehrere Ebenen sind natürlich noch schwieriger). , aber wenn synchrone Ajax-Anfragen gestellt werden, fühlt sich die Benutzerseite tot an [lacht und weint] 】;

//外层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
     {        //真实姓名、身份证号码错误
     }
   }
});
Methode 2 verwendet Versprechen

Zusammenfassung

 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) {
            //真实姓名、身份证号码错误
        });
Lassen Sie mich zunächst über die Schlussfolgerung sprechen: Promise eignet sich für mehrschichtige verschachtelte asynchrone Ajax-Rückrufe.

Offensichtlich unterscheidet es sich von der verschachtelten Ajax-Struktur der ersten Methode Methode zwei ist klarer, insbesondere nach mehrschichtiger Verschachtelung. Die Vorteile von Methode zwei sind offensichtlicher. Nach mehrschichtiger Verschachtelung wird Methode eins zu einem großen Durcheinander und ist sehr schwer zu verstehen. Methode zwei kann verwendet werden:

Format, die Struktur ist sehr klar;

Verwandte Empfehlungen:
new Promise().then()
    .then()
    .then()
    .catch();

Tutorial zur grundlegenden Verwendung von Promise


Verwendung von Promise Rückrufe vereinfachen

Parsing von Promise-Instanzen in js

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Promise-Objektinstanzen in js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn