JavaScript 异步编程全攻略:回调、Promise、async/await 实战
回调:简单但易产生嵌套问题,适合简单场景。Promise:链式调用改善可读性,适合复杂异步流程。:同步风格编写异步代码,推荐现代项目使用。
·
回调函数(Callback)www.jljyoa.comAAA
回调函数是异步编程的基础模式,将函数作为参数传递给另一个函数,在异步操作完成后执行。典型例子是 setTimeout 或文件读取操作。m.jljyoa.comAAA
function fetchData(callback) {
setTimeout(() => {
callback('Data received');
}, 1000);
}
fetchData((data) => {
console.log(data); // 输出: Data received
});
回调的缺点是嵌套过多会导致“回调地狱”(Callback Hell),代码可读性差。healthfate.comAAA
Promise www.healthfate.comAAA
Promise 是 ES6 引入的异步解决方案,通过链式调用解决回调嵌套问题。状态分为 pending、fulfilled 和 rejected。m.healthfate.comAAA
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Data received');
}, 1000);
});
}
fetchData()
.then((data) => {
console.log(data); // 输出: Data received
})
.catch((error) => {
console.error(error);
});
Promise 提供 Promise.all 和 Promise.race 等工具方法处理多个异步操作。shoupin-med.comAAA
async/await www.shoupin-med.comAAA
ES2017 的 async/await 是 Promise 的语法糖,以同步方式编写异步代码。async 标记函数返回 Promise,await 暂停执行直到 Promise 完成。m.shoupin-med.comAAA
async function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('Data received');
}, 1000);
});
}
async function main() {
try {
const data = await fetchData();
console.log(data); // 输出: Data received
} catch (error) {
console.error(error);
}
}
main();
async/await 的优势是代码更简洁,错误处理可通过 try/catch 实现。zh-tek.comAAA
错误处理对比www.zh-tek.comAAA
- 回调:通过参数传递错误(Node.js 风格)。
fs.readFile('file.txt', (err, data) => { if (err) throw err; console.log(data); }); - Promise:使用
.catch()或链式捕获。fetchData().catch((error) => console.error(error)); - async/await:直接使用
try/catch。try { await fetchData(); } catch (error) { console.error(error); }
性能优化技巧m.zh-tek.comAAA
- 避免不必要的
await阻塞,可并行执行独立任务:const [user, posts] = await Promise.all([ fetchUser(), fetchPosts() ]); - 使用
Promise.race设置超时限制:const timeout = new Promise((_, reject) => { setTimeout(() => reject(new Error('Timeout')), 5000); }); await Promise.race([fetchData(), timeout]);
总结www.bj-lanhao.comAAA
- 回调:简单但易产生嵌套问题,适合简单场景。m.bj-lanhao.comAAA
- Promise:链式调用改善可读性,适合复杂异步流程。sz-qiaodan.comAAA
- async/await:同步风格编写异步代码,推荐现代项目使用。www.sz-qiaodan.comAAA
- m.sz-qiaodan.comAAA bolilai1388.comAAA www.bolil021sys.comAAA ai1388.comAAA m.bolilai1388.comAAA www.021sys.comAAA m.021sys.comAAA afymt.comAAA cdganggan.comAAA xmppfair.comAAA sjgzz.comAAA slzizheng.comAAA
更多推荐

所有评论(0)