在 Promise 出现之前,处理多个异步请求需要层层嵌套,导致代码难以维护。
Promise 本质是一个状态机(Pending -> Fulfilled / Rejected)。关键在于 then 方法的链式调用。
doSomething()
.then(result => doSomethingElse(result))
.then(newResult => doThirdThing(newResult))
.catch(failureCallback);
await 是 generator 的语法糖,它让异步代码看起来像同步代码。
// 优雅的错误处理
async function getData() {
try {
const user = await getUser();
const posts = await getPosts(user.id);
} catch (err) {
console.error('请求失败', err);
}
}