《告别回调地狱!三种写法带你玩转 JavaScript 异步》

🚀 从回调地狱到优雅异步:三种写法带你一步步进化

在前端开发中,我们经常会遇到这样的需求:

  1. 获取用户信息
  2. 根据用户 ID 获取订单信息
  3. 根据订单 ID 获取物流信息

这是一个典型的"多步骤依赖"的异步任务,如果用不同的方式实现,会有完全不同的代码风格和可维护性。

今天,我们就用同一个例子,演示 回调写法 → Promise → async/await 三种方式的演变,让你彻底告别"回调地狱"。


你觉得这三种写法哪个更好理解理解?把你的想法打在评论区!


1.回调写法


2.promise 写法


3.async/await 写法


语法介绍

Promise:

一句话 : Promise 是JavaScript 用来处理 异步函数 的一种机制,让你避免"回调地狱"(callback hell)。

Promise 的状态

一个Promise有三种可能的状态:

  1. pending(待定) :初始状态,既不是成功,也不是失败。
  2. fulfilled(已实现) :意味着操作成功完成。
  3. rejected(已拒绝) :意味着操作失败。

代码示例:展示不同状态的Promises

ini 复制代码
let fulfilledPromise = Promise.resolve('成功');
let rejectedPromise = Promise.reject('失败');

fulfilledPromise.then(value => console.log(value)); // 输出:成功
rejectedPromise.catch(error => console.log(error)); // 输出:失败

async 和 await:

一句话 :async/await 是 Promise 的语法糖,让异步代码看起来像同步代码。

async:

通过在函数声明前加上async关键字,可以将任何函数转换为返回Promise的异步函数。这意味着你可以使用.then()和.catch()来处理它们的结果。

await:

await在 async 函数内部使用 await 关键字可以暂停函数的执行,等待一个 Promise 被解决(resolve)或拒绝(reject),之后再继续执行后续代码,从而使异步代码看起来更像同步代码,提升可读性。


更详细的promise学习大家可以看阮一峰的ES6:Promise 对象 - ECMAScript 6入门

相关推荐
程序员大阳5 小时前
副队长JavaScript教程(49)-主动抛出异常与错误类型
javascript·异常处理·error·throw·错误类型
hhhjhl5 小时前
Protobuf.js 跨端三方库仓颉适配全流程
javascript·网络·udp
Flynt8 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
slongzhang_9 小时前
linux 递归删除源码文件|递归删除目录下 *.js,但排除 *.min.js
linux·开发语言·javascript
liyi_hz200812 小时前
O2OA(翱途) V10.1 即将发布|功能再升级,安全再加固,协同更高效!
java·javascript·windows·开源软件
志尊宝13 小时前
AI原生前端开发(029):AI辅助的文档自动生成
javascript·人工智能·ai-native
一个游离的指针13 小时前
ES6新特性:let、const、块级作用域
开发语言·javascript·es6
Hilaku14 小时前
删了一个没用的 console.log,生产环境直接崩了!
前端·javascript·程序员
真上帝的左手14 小时前
2. 编程语言-JavaScript
开发语言·javascript
2601_9498477514 小时前
Form-data 跨端三方库仓颉适配全流程
前端·javascript·flutter