lister.js渐进式化4:ajax的调用与封装
// 引入lister.js库
import Lister from './lister.js';
// 创建Lister实例
const lister = new Lister();
// 定义ajax函数,使用Promise封装
lister.ajax = function(url, method = 'GET', data = null) {
// 返回一个Promise
return new Promise((resolve, reject) => {
// 创建一个XMLHttpRequest对象
const xhr = new XMLHttpRequest();
// 配置请求
xhr.open(method, url);
// 如果是POST请求,设置请求头
if (method === 'POST') {
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
}
// 发送请求
xhr.send(data);
// 监听请求完成
xhr.onload = function() {
if (this.status >= 200 && this.status < 300) {
// 请求成功,解析响应并调用resolve
resolve(JSON.parse(this.response));
} else {
// 请求失败,调用reject
reject({
status: this.status,
statusText: xhr.statusText
});
}
};
// 监听请求错误
xhr.onerror = function() {
// 请求出错,调用reject
reject({
status: this.status,
statusText: xhr.statusText
});
};
});
};
// 使用ajax函数发送请求
lister.ajax('https://api.example.com/data', 'GET')
.then(response => {
console.log('请求成功:', response);
// 处理响应数据
})
.catch(error => {
console.error('请求失败:', error);
// 处理错误
});
这段代码首先引入了lister.js库,并创建了一个Lister实例。然后,定义了一个ajax函数,使用Promise封装了XMLHttpRequest请求。该函数可以发送GET或POST请求,并在请求成功或失败时调用resolve或reject。最后,使用lister实例的ajax函数发送了一个GET请求,并在Promise中处理了响应或错误。
评论已关闭