使用promise封装ajax请求
时间: 2023-05-23 20:04:33 浏览: 117
Vue Promise的axios请求封装详解
5星 · 资源好评率100%
A:可以使用以下代码封装ajax请求:
```javascript
function ajaxPromise(url, params) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
xhr.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status >= 200 && this.status < 300) {
resolve(xhr.response);
} else {
reject({
status: xhr.status,
statusText: xhr.statusText
});
}
}
};
xhr.onerror = function() {
reject({
status: xhr.status,
statusText: xhr.statusText
});
};
xhr.send(JSON.stringify(params));
});
}
```
在调用该方法时,可以像下面这样使用:
```javascript
ajaxPromise('http://example.com/api', {name: 'John', age: 18})
.then(response => {
console.log(response);
})
.catch(error => {
console.error(error.statusText);
});
```
该方法会返回一个Promise对象,可以使用.then()和.catch()方法分别处理请求成功和失败时返回的数据。注意,在调用send()方法时,需要将参数使用JSON.stringify()方法转为JSON字符串。此外,也可以根据实际需求配置其他请求头或请求参数。
阅读全文