Promise 和 async/await(看了必会哦~~)

🌟 鸿蒙 ArkTS 开发:Promise 和 async/await 的相声剧场 🎤

大家好!今天我是你们的"代码说书人",来聊聊鸿蒙 ArkTS 开发中的两位异步巨星------​​Promise​ ​ 和 ​​async/await​​!它们就像相声里的"逗哏"和"捧哏",一个负责搭台子,一个负责唱大戏~


🎭 第一幕:Promise------"我承诺!"(逗哏出场)

​Promise 的内心戏​ ​:

"我承诺(Promise)未来会给你一个结果!要么成功(resolve),要么失败(reject),绝不让你干等着!"

typescript 复制代码
// Promise 的基本款
function 泡面() {
  return new Promise<string>((resolve, reject) => {
    setTimeout(() => {
      const 煮糊了 = Math.random() > 0.5;
      煮糊了 
        ? reject("💥 糊了!黑炭面出锅!") 
        : resolve("🍜 香喷喷的泡面完成!");
    }, 3000);
  });
}

// 调用方式
泡面()
  .then(面 => console.log("开吃:" + 面))
  .catch(事故 => console.log("外卖电话:" + 事故));

​Promise 绝活​ ​:

✅ 自带 .then() 接成功

✅ 自带 .catch() 接翻车

✅ 自带 .finally() 收尾打扫现场


🎩 第二幕:async/await------"我等你!"(捧哏亮相)

​async/await 的内心戏​ ​:

"Promise 哥你先忙,我在这优雅地等(await)着你,代码看起来像同步,实际是异步,逼格瞬间提升!"

javascript 复制代码
async function 优雅吃面() {
  try {
    console.log("烧水中...");
    const 面 = await 泡面(); // 暂停!等泡面
    console.log("优雅开吃:" + 面);
  } catch (厨房事故) {
    console.log("点外卖:" + 厨房事故);
  } finally {
    console.log("洗碗机启动!");
  }
}

// 调用就像调函数
优雅吃面();

​async/await 三大绝技​ ​:

1️⃣ async:标记函数内有异步操作

2️⃣ await:暂停等 Promise 出结果

3️⃣ try/catch:同步方式处理错误


🤼 第三幕:最佳拍档的使用场景

场景 1️⃣:需要"顺序操作"(等泡面才能吃)

javascript 复制代码
async function 做饭流程() {
  const 饭 = await 煮饭();
  const 菜 = await 炒菜(); // 等饭好了才炒菜
  return 饭 + 菜;
}

场景 2️⃣:需要"并行操作"(饭和菜同时做)

javascript 复制代码
async function 高效做饭() {
  const [饭, 菜] = await Promise.all([煮饭(), 炒菜()]);
  return "开饭啦!" + 饭 + 菜;
}

场景 3️⃣:网络请求(经典组合拳)

javascript 复制代码
async function 获取用户数据() {
  try {
    const 响应 = await axios.get("https://api/user");
    return 响应.data;
  } catch (错) {
    console.log("网络开小差了", 错);
    return null;
  }
}

🥊 对战回合:Promise vs async/await

​招式​ ​Promise​ ​async/await​
​代码风格​ 链式调用(.then.then) 同步写法(不用缩进到怀疑人生)
​错误处理​ .catch() 单独处理 try/catch 统一捕获
​可读性​ 复杂操作像"俄罗期套娃" 像读故事书一样流畅
​适用场景​ 简单异步操作 复杂异步流程(尤其多层依赖)

💡 终极大招:黄金搭档使用口诀

函数前面加 async

Promise 前加 await

错误要用 try/catch

并行请用 Promise.all

记住这口诀,你就是鸿蒙异步界的郭德纲!


🎬 大结局:一句话总结

Promise 是底层的​​承诺​ ​(异步契约)

async/await 是优雅的​​等待​ ​(语法糖衣)

两者配合使用,让异步代码写起来像同步一样美!

下次你的代码遇到"等待烦恼",记得请出这对相声组合------让Promise搭台子,async/await唱戏,保证观众(代码)掌声雷动!👏

相关推荐
吃饺子不吃馅9 分钟前
AntV X6图编辑器如何实现切换主题
前端·svg·图形学
余防1 小时前
XXE - 实体注入(xml外部实体注入)
xml·前端·安全·web安全·html
jump_jump1 小时前
前端部署工具 PinMe
运维·前端·开源
Baklib梅梅1 小时前
优秀文档案例解析:打造高效用户体验的最佳实践
前端·ruby on rails·前端框架·ruby
慧一居士1 小时前
VUE、jquery、React、Ant Design、element ui、bootstrap 前端框架的 功能总结,示例演示、使用场景介绍、完整对比总结
前端
GISer_Jing2 小时前
0926第一个口头OC——快手主站前端
开发语言·前端·javascript
MediaTea3 小时前
Jupyter Notebook:基于 Web 的交互式编程环境
前端·ide·人工智能·python·jupyter
少年阿闯~~3 小时前
CSS——重排和重绘
前端
个人看法3 小时前
h5实现一个吸附在键盘上的工具栏
前端·javascript·vue
知识分享小能手4 小时前
微信小程序入门学习教程,从入门到精通,微信小程序页面制作(2)
前端·javascript·学习·微信小程序·小程序·前端框架·notepad++