function getJSON(url){ return new Promise((resolve,reject)=>{ const handler = function(){ if(this.readyState !== 4) return if(this.status === 200| | this.status === 304){ resolve(this.response) }else{ reject(new Error(this.statusText)) } } const client = new XMLHttpRequest() client.open('GET',url) client.onreadystatechange = handler client.responseType = 'json' client.setRequestHeader('Accept','application/json') client.send() }) }
补充
readystate状态
0.UNSET-代理被创建,但尚未调用 open() 方法。
1.OPENED-open() 方法已经被调用。
2.HEADERS_RECEIVED-send() 方法已经被调用,并且头部和状态已经可获得。
3.LOADING-下载中; responseText 属性已经包含部分数据。
4.DONE-下载操作已完成。