使用promise封装一个ajax请求
时间: 2023-04-11 08:00:33 浏览: 117
好的,我可以回答这个问题。使用promise封装一个ajax请求的代码如下:
```javascript
function ajax(url, method, data) {
return new Promise(function(resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open(method, url);
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(xhr.responseText);
} else {
reject(xhr.statusText);
}
}
};
xhr.onerror = function() {
reject(xhr.statusText);
};
xhr.send(data);
});
}
```
其中,url表示请求的地址,method表示请求的方法,data表示请求的数据。这个函数返回一个promise对象,可以通过then方法来处理请求成功和请求失败的情况。
相关问题
使用promise封装ajax请求
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字符串。此外,也可以根据实际需求配置其他请求头或请求参数。
promise封装ajax请求
可以使用 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 请求,并通过链式调用来处理异步请求的结果。
阅读全文