promise实现ajax

1,812 阅读1分钟

promise实现ajax

function getJSON(url){
    let promise=new Promise((resolve,reject)=>{
        handler(){
            if(this.readyState!==4){
                return;
            }
            if(this.status===200){
                resolve(this.response);
            }else{
                reject(new Error(this.statusText));
            }
        }
        let xhr=new XMLHttpRequest();
        xhr.open('GET',url);
        xhr.send();
        xhr.onreadystatechange=handler;
    })
    return promise;
}

getJSON("http://...").then(function(data){
    console.log(data);
}).catch(function(res){
    console.log(res);
})

resolve( )异步操作成功时,会返回成功结果,并作为参数传递出去;

reject( )异步操作失败时,返回失败结果,并作为参数传递出去;