async,await,fetch,ajax, fetch,axios区别

本文探讨了async和await如何联合使用以替代Promise的then和catch方法,将异步代码变为同步阻塞式执行。此外还对比了ajax、fetch、axios等异步操作方式的特点。
部署运行你感兴趣的模型镜像

其实async 和await联合起来使用相当于替代了Promise的then和catch方法,将async低昂一的函数里面的代码由异步变成了同步阻塞式,只有当await定义的行数执行完了代码才会继续往下执行,同时await还有有返回值,他的返回值在上面这个例子中就是resolve

Promise:轻松实现多个异步函数调用。
ajax:异步调用
fetch:类似于ajax的异步操作
async&await :相当于替代了Promise的then和catch方法
axios:一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中

参考链接:
https://www.zhihu.com/question/265744952/answer/298566500
https://blog.youkuaiyun.com/wang839305939/article/details/75505444
https://www.kancloud.cn/yunye/axios/234845

您可能感兴趣的与本文相关的镜像

AutoGPT

AutoGPT

AI应用

AutoGPT于2023年3月30日由游戏公司Significant Gravitas Ltd.的创始人Toran Bruce Richards发布,AutoGPT是一个AI agent(智能体),也是开源的应用程序,结合了GPT-4和GPT-3.5技术,给定自然语言的目标,它将尝试通过将其分解成子任务,并在自动循环中使用互联网和其他工具来实现这一目标

### 使用 Axios 进行 HTTP 请求时正确运用 Promise、async await #### 创建异步函数 在一个函数前加上 `async` 关键字表示此函数总是返回一个 Promise。这使得可以在函数内部使用 `await` 来等待 Promise 完成。 ```javascript async function fetchData(url) { try { const response = await axios.get(url); console.log(response.data); // 处理响应数据 } catch (error) { console.error('Error fetching data:', error); // 错误处理 } } ``` 这段代码定义了一个名为 `fetchData` 的异步函数,它接受 URL 参数并尝试通过 GET 方法发起请求[^4]。 #### 发起带有参数的 POST 请求 当需要发送带参数的数据到服务器时,可以构建一个包含配置的对象传递给 `axios.post()` 函数: ```javascript const postData = { title: 'foo', body: 'bar', userId: 1 }; async function submitPostRequest(url, postData) { try { const response = await axios.post(url, postData); console.log('Response from server:', response.data); } catch (error) { console.error('Failed to post data:', error); } } ``` 这里展示了如何利用 `await` 等待来自服务器对于 POST 请求的回复,并且能够捕获任何可能发生的错误[^5]。 #### 并发执行多个请求 有时希望并发地发出几个独立但相互关联的 API 调用。这时可以用 `Promise.all([])` 结合 `await` 来实现这一点: ```javascript async function fetchMultipleResources(urls) { try { const requests = urls.map(url => axios.get(url)); const responses = await Promise.all(requests); return responses.map(res => res.data); } catch (error) { throw new Error(`One or more requests failed ${error.message}`); } } // Example usage with an array of URLs. const resourceUrls = ['https://api.example.com/resource1', 'https://api.example.com/resource2']; fetchMultipleResources(resourceUrls).then(dataArray => console.log(dataArray)).catch(console.error); ``` 上述例子说明了怎样一次性启动所有的请求并将它们放入数组中交给 `Promise.all()` 去管理;一旦所有请求都完成,就会获得一组结果[^1]。 #### 遍历列表中的每一项并对其应用异步操作 如果想要遍历一个项目列表并对每一个项目执行一次网络请求,需要注意的是像 `.forEach()` 或者简单的循环语句并不支持直接配合 `await` 工作良好。因此推荐改用其他迭代方式如 `for...of` 循环来确保每次调用都能按顺序被执行而不会跳过任何一个未决状态的任务。 ```javascript async function processItems(items) { for (let item of items) { try { let result = await axios.get(item.url); console.log(`${item.name}:`, result.data); } catch (err) { console.warn(`Failed processing ${item.name}`, err); } } } ``` 在这个片段里,`processItems` 函数接收一个物品集合作为输入,依次访问每个项目的链接地址,并打印出相应的输出或警告信息[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值