Promise 和 Await / Async 的区别
约 336 字大约 1 分钟
2025-04-29
Promise()
和 async/await
是 JavaScript 处理异步操作的两种方式,核心区别如下:
一、语法形式
1、Promise()
Promise
通过 .then()
链式调用处理异步结果。Promise.all()
可以同时处理多个异步操作。
fetchData()
.then((data) => processData(data))
.then((result) => console.log(result))
.catch((err) => console.error(err));
Promise.all([fetchData1(), fetchData2()])
.then(([data1, data2]) => {
// 处理 data1 和 data2
})
.catch((err) => console.error(err));
2、async/await
async/await
是基于 Promise
的语法糖。
async
关键字输出异步操作结果,await
关键字标记一个异步操作。其书写风格更接近同步代码。
async function main() {
try {
const data = await fetchData();
const result = await processData(data);
console.log(result);
} catch (err) {
console.error(err);
}
}
二、代码可读性
Promise
嵌套多时易形成“回调地狱”(then
链过长)。async/await
代码扁平化,更接近同步逻辑,易于理解。- 如果需要等待多个异步操作完成,使用
Promise.all()
可读性更好
三、错误处理
Promise
通过.catch()
统一捕获链中所有错误。async/await
通过try/catch
块捕获错误,可精准定位。
四、本质关系
async/await
基于Promise
封装,是Promise
的语法糖,简化了异步代码的写法。
五、一句话总结
Promise
是基础,适合简单异步逻辑;async/await
是优化版,用同步写法解决复杂异步问题,两者结合使用更高效。
更新日志
2025/8/24 08:17
查看所有更新日志
e7112
-1于