Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。
Promise的构造函数接收一个参数,是函数,并且传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。
function ajax(method, url){
return new Promise((resolve, reject) => {
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
if(method == 'GET') {
xhr.open('GET', url, true);
xhr.send(null);
}else{
reject(new Error('请求相关错误'));
}
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){ if(xhr.status == 200){
// console.log('--');
resolve(JSON.parse(xhr.responseText));
}else{ reject(new Error('失败'));
}
}
}
})
}
ajax('GET','http://10.0.157.247:8888/getUserList')
.then( (data) => { console.log(data); })
.catch((err) => { console.log(err); })