当前位置: 首页 > news >正文

将axios、async、Promise联系在一起讲一下讲一下.then 与其关系

将axios、async、Promise联系在一起讲一下

axios、async、Promise 关系一句话:
axios 返回 Promise,async/await 是基于 Promise 的语法糖,用来更优雅地处理 axios 异步请求。

🔄 三者关系链

axios (产生) → Promise (包装) → async/await (处理)

📝 代码演进对比

1. 原始 Promise

axios.get('/api/data').then(response => {console.log(response.data);}).catch(error => {console.error(error);});

2. async/await 简化

async function fetchData() {try {const response = await axios.get('/api/data');  // axios返回Promise,await等待其完成console.log(response.data);} catch (error) {console.error(error);}
}

🎯 核心关系

  • axios:基于 Promise 的 HTTP 客户端,所有请求都返回 Promise 对象
  • Promise:异步操作的容器,提供 then/catch 处理方法
  • async/await:让 Promise 异步代码写得像同步代码的语法糖

简单说:用 async/await 来优雅地处理 axios 返回的 Promise。

讲一下.then 与其关系

.thenPromise 的核心方法,与 async/await 是处理异步的两种不同风格。

🎯 关系定位

axios → Promise → .then()  // 传统链式写法→ async/await  // 现代语法糖

📝 代码对比

1. .then() 链式调用

// Promise 链式写法
axios.get('/api/flight-records').then(response => {console.log(response.data);return processData(response.data);}).then(processedData => {return saveToDatabase(processedData);}).then(result => {console.log('保存成功', result);}).catch(error => {console.error('请求失败', error);});

2. async/await 同步风格

// async/await 写法
async function fetchAndProcess() {try {const response = await axios.get('/api/flight-records');const processedData = await processData(response.data);const result = await saveToDatabase(processedData);console.log('保存成功', result);} catch (error) {console.error('请求失败', error);}
}

🔄 等价关系

.then() 写法async/await 写法
.then(value => {...})const value = await promise
.catch(error => {...})try/catch
.then().then() 链式顺序的 await 语句
.finally()try/catch/finally

💡 实际转换示例

// .then 版本
function loadFlightData(recordId) {return axios.get(`/api/records/${recordId}`).then(response => response.data).then(record => {return axios.get(`/api/pilots/${record.pilotId}`);}).then(pilotResponse => pilotResponse.data);
}// async/await 版本
async function loadFlightData(recordId) {const recordResponse = await axios.get(`/api/records/${recordId}`);const record = recordResponse.data;const pilotResponse = await axios.get(`/api/pilots/${record.pilotId}`);return pilotResponse.data;
}

🏆 总结关系

  • .then:Promise 的原生处理方法,链式调用
  • async/await:基于 Promise 的语法糖,让异步代码看起来像同步代码
  • 两者本质相同:都是处理 Promise 的不同语法风格
  • async/await 更易读:特别是在处理多个依赖的异步操作时

简单说:.then 是 Promise 的"原生语言",async/await 是它的"翻译官",让代码更易懂。

http://www.dtcms.com/a/540618.html

相关文章:

  • 最权威的排行榜网站scratch网站开发
  • WPF 数据绑定详解
  • 【Swift】LeetCode 54. 螺旋矩阵
  • 河北邯郸seo网站建设网站优化专业网站的定义
  • Python测试题2
  • WordPress 上传图片报错:明明是 PNG,却提示「请转换为 JPEG 或 PNG 格式」?
  • annotation-logging-guide
  • 没有公司做网站重庆网站推广入口
  • 管理k8s的资源类型(PV/PVC)的脚本
  • 【记录】飞书多维表格|做自动显示当前填写情况(包括填写人数、未填写情况、最高分和平均分)的收集表
  • 清除入侵痕迹(winLinuxweb)
  • 找设计师的网站淘宝客 网站建设
  • 第六部分:VTK进阶(第175章 并行 IO管线与检查点)
  • 河南海绵城市建设网站wordpress中文版书籍
  • Opencv(三): 二值化
  • GitHub使用技巧——上传本地项目
  • 网站建设用途一个旅游网站建设需求分析
  • 甜品网站网页设计代码网上免费推广
  • 渗透测试工具 windows上搭建vmware kali-linux
  • ecstore等产品开启缓存-后台及前台不能登录原因-setcookie+session问题
  • 哨兵原理、Redis分片、Redis数据结构、内存回收、缓存问题以及分布式事务相关内容(CAP、BASE、AT脏写及其解决、TCC、最大努力通知)
  • Windows图标修复--缓存重建教程
  • 服务器上用Slurm 管理训练bash 脚本任务,申明使用GPU
  • 上海小程序网站开发公司wordpress国外主题下载地址
  • 新城镇建设官方网站kali建设网站
  • 便携式el检测仪:确保光伏组件的质量与性能稳定
  • 英一2015年真题学习笔记
  • Docker 部署银河麒麟(Kylin Linux)全流程教程
  • GPT、DeepSeek等大语言模型应用
  • 大语言模型基础LLM:Transformer和大模型