promise封装ajax
时间: 2023-11-09 13:51:22 浏览: 69
promise.js自定义封装,包含构造函数以及class封装
下面是一个使用 Promise 封装的 AJAX 请求示例:
```javascript
function ajax(url, method, data) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (this.status >= 200 && this.status < 300) {
resolve(xhr.response);
} else {
reject({
status: this.status,
statusText: xhr.statusText
});
}
};
xhr.onerror = function() {
reject({
status: this.status,
statusText: xhr.statusText
});
};
xhr.send(JSON.stringify(data));
});
}
```
使用示例:
```javascript
ajax('https://api.example.com/data', 'POST', { name: 'John Doe' })
.then(function(response) {
console.log('Success:', response);
})
.catch(function(error) {
console.log('Error:', error);
});
```
在这个示例中,我们使用 Promise 封装了一个简单的 AJAX 请求。该函数接收三个参数:请求 URL、HTTP 方法和请求数据。它返回一个 Promise 对象,该对象在请求成功时解析为响应数据,请求失败时拒绝为一个错误对象。在 AJAX 请求的 onload 回调中,我们检查 HTTP 响应状态码,并根据响应状态码是否在 200 到 299 之间来解析或拒绝 Promise。如果请求失败或在 onerror 回调中触发了错误,则将错误信息传递给 Promise 的拒绝处理程序。在调用 ajax 函数时,我们可以使用 then 和 catch 方法来处理 Promise 的解决和拒绝状态。
阅读全文