promise封装ajax

promise的含义(本身不是异步,是封装异步操作的容器,统一异步的标准)

promise对象的特点:对象的状态不受外界影响;一旦状态改变,就不会再变,任何时候都可以得到这个结果。

function aaa() {
        const promise = new Promise(function (resolve, reject) {
            const xmlhttp = new XMLHttpRequest();
            xmlhttp.open("post", "url");
            xmlhttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
            xmlhttp.onreadystatechange = function () {
                if (this.readyState != 4) {
                    return;
                }
                if (this.status == 200) {
                    resolve(this.response);
                } else {
                    reject(new Error("数据请求失败"))
                }
            }
            xmlhttp.send("");

        })
        return promise;
    }
//then处理数据
let bbb = aaa();
    bbb.then(function (value) {
        var data = JSON.parse(value);
        for (let i of Object.values(data)) {
            var name = i.name_coach;
            document.getElementById("ul").innerHTML += "<li>" + name + "</li>";
        }
    }, function (error) {
        alert(error);
    })
原文地址:https://www.cnblogs.com/yieix/p/12033321.html