异步任务(网络请求、定时器)不会立刻返回结果。Promise 表示“将来完成的值”;async/await 让异步代码读起来像同步。

pending fulfilled rejected
图:pending → fulfilled / rejected 三种状态
async function loadProfile(id) {
  try {
    const res = await fetch("/api/user/" + id);
    if (!res.ok) throw new Error("请求失败");
    return await res.json();
  } catch (err) {
    console.error(err);
    return null;
  }
}

并行与串行

多个独立请求用 Promise.all;有依赖关系才串行 await。