JavaScript Promise 与 Async/Await 解析

想象一下你在网上订了一份比萨。

你不会一直站在门口无所事事地等待它送达。你可以看视频、工作或和朋友聊天。当比萨送到时,你再吃。

JavaScript 的工作方式也是如此。

像 API 请求或数据库调用这样的任务需要时间。如果 JavaScript 等待每个任务完成,你的应用就会卡死。相反,它会在等待的同时继续运行其他代码。

Promise 代表一个未来才会到达的值。

Promise 有三种状态:

你很少会看到用于创建新 Promise 的代码。这是因为像 fetch() 这样的现代工具已经为你返回了一个 Promise。

.then() 是做什么用的?

许多人认为 .then() 是用来获取数据的。其实不然。

.then() 注册了一个回调函数。你告诉 JavaScript:“当这个 Promise 完成时,运行这个函数。”

这就像一个外卖 App。你订了餐,App 会说:“食物送到时叫我。”这个函数就是在等待结果。

为什么要使用 Async/Await?

你可以通过链式调用 .then() 来获取用户数据,然后是帖子,最后是评论。这样做虽然可行,但过长的链式调用很难阅读。

Async/await 让代码看起来像普通的、按步骤执行的代码。它更简洁,也更容易理解。

await 会阻塞 JavaScript 吗?

这是一个常见的面试题。答案是:不会。

当 JavaScript 遇到 await 关键字时,它只会暂停那个特定的 async 函数。应用程序的其他部分会继续运行。

示例流程:

  1. 运行 async 函数中的代码。
  2. 遇到 await 并暂停该函数。
  3. 运行应用程序的其余部分。
  4. 当任务完成时,恢复 async 函数的执行。

Async/await 只是编写 Promise 的一种更简洁的方式。它是一种语法糖。

核心要点:

来源:https://dev.to/aarthirs/javascript-promises-asyncawait-explained-with-a-real-life-example-43bm