未找到匹配的笔记

async & await

基础

概念

async/await是基于Promise的语法糖,它能用写同步代码的方式处理异步操作,底层仍是Promise,代码更清晰、错误处理更直观。

基本语法

async函数

  • 在函数前加 async,该函数自动返回一个 Promise
  • 即使你 return 一个普通值,也会被包装成 Promise.resolve(value)

await表达式

  • 只能在 async 函数内部使用
  • 暂停函数执行,等待 Promise 完成(fulfilled 或 rejected)
  • 如果 await 后面不是 Promise,会自动用 Promise.resolve() 包装

执行机制

await并不会阻塞整个JS主线程,它利用了Promise+微任务机制,只暂停当前函数的执行上下文,把控制权交还给事件循环。

并发 & 串行

  • 需要前一步结果 → 用 await 串行
  • 多个独立异步操作 → 用 Promise.all + await 并发
async function fast() {
  const userPromise = fetchUser();   // 立即发起请求
  const postsPromise = fetchPosts(); // 立即发起请求

  const user = await userPromise;    // 等待结果
  const posts = await postsPromise;  // 等待结果 → 总耗时 ~1s
  return { user, posts };
}

// 或更简洁:
async function fastest() {
  const [user, posts] = await Promise.all([fetchUser(), fetchPosts()]);
  return { user, posts };
}