JavaScript 异步 Promise
JavaScript 是单线程语言,异步编程是处理耗时操作(如网络请求、定时器)的关键。本文梳理了从回调到 async/await 的演变过程。
一、回调函数 (Callback)
最早的异步解决方案,但容易导致"回调地狱",代码难以维护。
getData(function(a) {
getMoreData(a, function(b) {
getMoreData(b, function(c) {
console.log(c);
});
});
});
二、Promise 对象
Promise 是异步编程的一种解决方案,代表一个未来才会结束的操作及其结果。
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
Promise 有三种状态:Pending(进行中)、Fulfilled(已成功)和 Rejected(已失败)。
三、async/await
ES2017 引入的语法糖,让异步代码看起来像同步代码,可读性更强。
async function getData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
getData();
四、事件循环 (Event Loop)
理解异步编程必须理解事件循环机制。JS 引擎会先将同步任务执行完毕,再去任务队列中读取异步任务。
💡 最佳实践: 在现代开发中,推荐优先使用 async/await 处理异步逻辑,配合 try/catch 进行错误处理。
五、学习心得
异步编程是 JavaScript 的难点也是重点。通过实际项目中的接口调用练习,我逐渐理解了 Promise 链式调用和 async/await 的区别。
六、后续计划
- 深入学习 Promise 高级用法(Promise.all, Promise.race)
- 研究 Generator 函数
- 阅读 RxJS 响应式编程库
免责声明: 本文内容为个人学习笔记,仅供参考学习使用。如有错误或不足,欢迎指正。