进阶与异步2026年1月22日星期四

Async / Await

现代、整洁的异步代码。

广告

查看赞助商以支持 JS Fruggal。

Async/Await 是 Promise 的语法糖。它使异步代码看起来像同步的,这更容易被人脑理解。

模式

注意我们把所有东西都包裹在 try/catch 中。这在专业代码中是强制性的。没有它,如果请求失败,你的应用程序可能会悄无声息地崩溃。

// 模拟 API 调用
const fetchUser = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      // 模拟 50% 的失败率
      Math.random() > 0.5 
        ? resolve({ id: 1, name: "Alice" }) 
        : reject(new Error("网络错误"));
    }, 1000);
  });
};

async function loadProfile() {
  console.log("加载中...");
  
  try {
    // 代码在此暂停,直到 promise 解决
    const user = await fetchUser();
    console.log("用户已加载:", user.name);
  } catch (error) {
    // 如果 promise 被拒绝,我们跳转到这里
    console.error("失败:", error.message);
  } finally {
    console.log("隐藏加载旋转器。");
  }
}

loadProfile();

常见错误:连续瀑布

如果事物互不依赖,不要一个接一个地 await。
坏: await getUser(); await getPosts(); (等待两次)。
好: await Promise.all([getUser(), getPosts()]); (一起运行)。

广告

查看赞助商以支持 JS Fruggal。