用Promise封装简单的ajax请求!

let geturl="http://xxx";
let posturl="http://xx";

1.get
function getRequest(Url){
    let p=new Promise((resolve,reject)=>{
        let xhr=new XMLHttpRequest();
        xhr.open('GET',Url,true);
        xhr.onreadystatechange=function(){
            if(this.readyState===4){
                if(this.status===200){
                    resolve(this.responseText,this);
                }else{    
                    reject("Request Fail");
                }            
            }
        }
        xhr.send();
    });
    return p;
};
getRequest(geturl).then(data=>{
    console.log("success:"+data);
}).catch((data)=>{
    console.log("fail:"+data);
});

2.post

function postRequest(Posturl,data){
    let p=new Promise((resolve,reject)=>{
        let xhr=new XMLHttpRequest();
        xhr.open("POST",Posturl,true);
        xhr.onreadystatechange=function(){
            if(this.readyState===4){
                if(this.ststus=200){
                    resolve(this.responseText);
                }else{
                    reject("Request Fail");
                }
            }
        }
        xhr.send(JSON.stringify(data));
    });
    return p;
}
postRequest(posturl).then(data=>{
    console.log("success:"+data);
}).catch(data=>{
    console.log("fail:"+data);
})

注:用Promise封装ajax要求对Promise有简单的了解,Promise是一个构造函数,它的参数是带有resolve和reject的函数。Promise的出现解决了使用异步回调地狱的问题。

你可能感兴趣的:(原创)