1.先思考如何拿取异步对象中的属性?http状态码?
readyState属性都代表什么:
0:未初始化。尚未调用open()方法
1:启动。已经调用open()方法,但是未调用send()方法
2:发送。已经调用send()方法,但尚未接收到响应
3:接收。已经接收到部分响应数据
4:完成。已经接收到全部响应数据
如何拿数据
收到响应后,响应的数据会自动填充到 XMLHttp 对象的属性,
因此 readState、status 和 responseText 属性都要通过 XMLHttp 去拿,
而不是回调函数的参数(最好也不要用this)
status属性是什么
是http的状态码(status)
当满足status === 200这个条件时,就说明请求成功,并且拿到返回的数据
2.Promise 封装 Ajax
var myAjax = function(url){
return new Promise((resolve, reject) => {
let xhr
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest()
}else{
xhr = new ActiveXObject("Microsoft.XMLHTTP")
}
xhr.open('get', url, true)
xhr.send()
xhr.onreadystatechange = function(){
if (xhr.readyState === 4 ) {
if (xhr.status === 200) {
resolve(this.responseText)
} else {
var reason = { status: this.status, response: this.response }
reject(reason)
}
}
}
})
}