Async/Await 是 Promise 的语法糖。它使异步代码看起来像同步的,这更容易被人脑理解。
模式
注意我们把所有东西都包裹在 try/catch 中。这在专业代码中是强制性的。没有它,如果请求失败,你的应用程序可能会悄无声息地崩溃。
javascript
// 模拟 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()]); (一起运行)。