想必都用过ajax 的请求吧,那么为什么需要用promise对ajax封装?
使用promise 发送请求前,我们需要在ajax绑定事件中对返回的事件进行操作,
而使用promise后,只需要在promise外的用then等方法进行操作,看起来更简洁好看,便于ajax请求简化
const p = new Promise((resolve, reject) => {
//1. 创建对象
const xhr = new XMLHttpRequest();
//2. 初始化
xhr.open("GET", "https://api.apiopen.top/getJ");
//3. 发送
xhr.send();
//4. 绑定事件, 处理响应结果
xhr.onreadystatechange = function() {
//判断
if (xhr.readyState === 4) {
//判断响应状态码 200-299
if (xhr.status >= 200 && xhr.status < 300) {
//表示成功
resolve(xhr.response);
} else {
//如果失败
reject(xhr.status);
}
}
}
})
现在看上面的ajax的请求是不是简化好看一点,没有对请求回来的数据处理 下面用then 方法进行指定回调
p.then(function(value) {
console.log(value);
}, function(reason) {
console.error(reason);
});