await,async,.then,promise这些关于异步的关键词之间是怎么联系的
当 Promise 完成(fulfilled)时的回调,也可以注册失败(rejected)的回调。我帮你按关系、执行顺序、语法糖的角度系统讲一下,你看完就能完全串起来。这样你以后看异步逻辑就像读顺序代码一样轻松。,直到 Promise 完成,然后把结果赋给变量。,把这几个概念用一个流程图全串起来,你一看就懂。林林,这几个关键词其实是一个体系的,只是。,用来描述“一个值在未来才会可用”。,即使你没有
林林,这几个关键词其实是一个体系的,只是写法和用法不同,但底层都是 Promise 机制。
我帮你按关系、执行顺序、语法糖的角度系统讲一下,你看完就能完全串起来。
1. Promise
Promise 是 ES6 提供的异步结果的容器,用来描述“一个值在未来才会可用”。
它有三种状态:
pending(进行中)fulfilled(已完成,resolve)rejected(已失败,reject)
创建方式:
let p = new Promise((resolve, reject) => {
setTimeout(() => resolve("OK"), 1000);
});
2. .then()
.then() 用来注册当 Promise 完成(fulfilled)时的回调,也可以注册失败(rejected)的回调。
p.then(
value => console.log("成功:", value),
err => console.error("失败:", err)
);
特点:
.then()不会阻塞,它会把回调放进微任务队列,等当前代码执行完再运行.then()总是返回一个新的 Promise,回调的返回值会作为下一个.then()的参数
例子:
Promise.resolve(1)
.then(v => v + 1) // 返回 2
.then(v => v + 1) // 返回 3
.then(console.log); // 打印 3
3. async
async 用在函数前面,让这个函数自动返回一个 Promise,即使你没有显式写 Promise。
async function foo() {
return 42; // 实际等同于 Promise.resolve(42)
}
特点:
async函数内部的返回值,会自动被Promise.resolve包装- 如果内部抛出错误,会自动变成 Promise 的 reject
4. await
await 只能用在 async 函数里,用来暂停代码执行,直到 Promise 完成,然后把结果赋给变量。
async function foo() {
let result = await Promise.resolve(123);
console.log(result); // 123
}
特点:
await会暂停当前 async 函数后面的执行,等 Promise resolve 后继续await等到的是.then()的结果,所以本质是.then()的语法糖- 如果 Promise reject,会直接抛出异常(需要 try/catch 捕获)
5. 它们的联系
核心关系一句话:
Promise 是机制,
.then是注册回调的方法,async/await是.then的语法糖。
流程图:
Promise (异步结果容器)
↓
.then() ← 注册 resolve/reject 回调,返回新 Promise
↓
async ← 自动返回 Promise
↓
await ← 暂停 async 函数,等待 Promise resolve,相当于 .then 的同步写法
例子(.then 写法):
fetch("/data")
.then(res => res.json())
.then(data => console.log(data))
等价的 async/await:
async function getData() {
const res = await fetch("/data");
const data = await res.json();
console.log(data);
}
getData();
6. 建议你记的关键点
- Promise 只是一个结果的“承诺”,等到未来才兑现
- .then 是注册兑现时要做的事(回调)
- async 自动返回 Promise,让你不必手动
new Promise - await 把
.then的回调写成同步的形式,让代码更清晰
林林,如果你愿意,我可以帮你画一张 “Promise → then → async/await” 总关系图,把这几个概念用一个流程图全串起来,你一看就懂。
你要我画吗?这样你以后看异步逻辑就像读顺序代码一样轻松。
更多推荐



所有评论(0)