Ajax实现原理很简单,就是封装XMLHttpRequest对象的操作,下面就以Get请求举例。
function Ajax(url, fn) {
// 实例化XMLHttpRequest对象
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function() {
// readyState == 4说明请求已完成
if (xhr.readyState == 4 && xhr.status == 200) {
// 改变this指向并执行回调函数
fn.call(this, xhr.responseText);
}
};
xhr.send();
}
axios的实现也是基于XMLHttpRequest对象,但不同于Ajax的是,axios返回的是一个Promise,所以简单的来说就是叫我们用Promise优化上面的代码。
function axios(url) {
return new Promise((resolve,reject)=>{
// 实例化XMLHttpRequest对象
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function() {
// readyState == 4说明请求已完成
if (xhr.readyState == 4 && xhr.status == 200) {
// 返回数据,可以在外部使用.then链式调用
resolve(xhr.responseText);
}
};
xhr.send();
})
}