前端开发 · 2026-07-05

JavaScript 异步笔记:回调、Promise 与 async/await

JavaScript 是单线程的,遇到网络请求、定时器等耗时操作,不能傻等,于是有了「异步」。理解异步,基本就是理解三件事的演进:回调、Promise、async/await。

回调:最原始的方式

把「做完之后要做什么」写成函数传进去:

setTimeout(function () {
  console.log('两秒后执行');
}, 2000);

问题是多个异步嵌套会形成「回调地狱」,读起来费劲。

Promise:给异步一个承诺

Promise 把「将来才会返回的结果」封装成一个对象,用 then 串联:

fetch('/api/data')
  .then(res => res.json())
  .then(data => console.log(data));

async/await:写起来像同步

在 Promise 之上,async/await 让异步代码读起来和同步几乎一样:

async function load() {
  const res = await fetch('/api/data');
  const data = await res.json();
  console.log(data);
}
小记:async/await 本质是 Promise 的语法糖,理解了 Promise,再看 await 就一点也不神秘。

回到 笔记列表 查看更多。