- 19
- 0
let ajax = (obj) => {
return new Promise((resolve, reject) => {
let method = obj.method || 'GET';
let xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
xhr.onReadyStateChange = () => {
if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304) {
resolve(xhr.responseText);
} else {
reject(xhr.statusText);
}
}
}
if (method == 'POST') {
xhr.open('POST', obj.url, true);
// =================下面两行为什么 get 时 没有 是没有必要吗?
xhr.responseType = "json";
xhr.setRequestHeader("Accept", "application/json");
xhr.send(obj.data);
} else {
let query = '';
for (let key in obj.data) {
//================================为什么用encodeURIComponent 可以直接写吗
query += '&' + encodeURIComponent(key) + "=" + encodeURIComponent(obj.data[key]);
}
query.substring(1);
xhr.open('GET', obj.url + '?' + query, true);
xhr.send();
}
})
} - 共 0 条
- 全部回答
-
時間會讓俄淡忘° 普通会员 1楼
Promise 是 Promise.js 中的一个概念,用于处理异步操作。在 JavaScript 中,通常会使用回调函数来处理异步操作,但这种方式可能会导致代码的可读性和可维护性降低。
Promise 的优势在于,它提供了一种更清晰、更易于理解的方式来处理异步操作。Promise 的构造函数接收一个回调函数作为参数,这个回调函数将在异步操作完成后被调用。
以下是一个使用 Promise 的 AJAX 请求封装的示例:
```javascript function makeAjaxRequest(url) { return new Promise((resolve, reject) => { // 这里是一个异步操作,如发送 HTTP 请求 fetch(url) .then(response => response.json()) .then(data => { // 在异步操作完成后,这个 Promise 被 resolve resolve(data); }) .catch(error => { // 在异步操作过程中,如果发生错误,这个 Promise 被 reject reject(error); }); }); }
// 使用示例 makeAjaxRequest('https://api.example.com/data') .then(data => { console.log(data); }) .catch(error => { console.error(error); }); ```
在这个示例中,我们首先创建了一个新的 Promise 对象,然后在这个 Promise 对象中执行了一个异步操作。如果异步操作成功,Promise 就会被 resolve,否则 Promise 就会被 reject。这样,我们就可以在 Promise 对象的 resolve 或 reject 方法中处理异步操作的结果。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
