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-下载操作已完成。