promise封装ajax请求
时间: 2023-08-24 12:08:43 浏览: 94
可以使用 Promise 来封装 AJAX 请求。下面是一个示例:
```javascript
function request(url, method, data) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url, true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 400) {
resolve(xhr.response);
} else {
reject(xhr.statusText);
}
};
xhr.onerror = function() {
reject(xhr.statusText);
};
xhr.send(JSON.stringify(data));
});
}
```
使用示例:
```javascript
request('https://api.example.com/data', 'POST', { foo: 'bar' })
.then(function(response) {
console.log('请求成功', response);
})
.catch(function(error) {
console.error('请求失败', error);
});
```
在封装的 `request` 函数中,我们创建了一个新的 Promise 对象,并在 AJAX 请求的 `onload` 和 `onerror` 事件处理程序中处理成功和失败的情况。如果请求成功,我们调用 `resolve` 方法并传递响应数据,如果请求失败,我们调用 `reject` 方法并传递错误状态信息。
在使用时,我们可以通过链式调用 `.then()` 和 `.catch()` 方法来处理异步请求的结果。`.then()` 方法接收一个回调函数,当请求成功时会调用该函数,并传递响应数据。`.catch()` 方法接收一个回调函数,当请求失败时会调用该函数,并传递错误信息。
这样,我们就可以使用 Promise 来封装 AJAX 请求,并通过链式调用来处理异步请求的结果。
阅读全文