Callback Hell 是什么
Callback Hell(回调地狱)是指: 当多个异步操作依赖前一个操作结果时, 代码被层层嵌套,结构像“金字塔”一样往右扩。
// ======================== 定义异步任务函数 ========================
// 每个函数都接收一个 callback,当定时任务结束后执行 callback()
// 模拟异步操作(如网络请求、数据库读取等)
function task1(callback){
// 模拟耗时 2 秒的任务
setTimeout(() => {
console.log("task 1 complete"); // 任务1完成
callback(); // 调用下一步
}, 2000);
}
function task2(callback){
setTimeout(() => {
console.log("task 2 complete"); // 任务2完成
callback(); // 调用下一步
}, 1000);
}
function task3(callback){
setTimeout(() => {
console.log("task 3 complete"); // 任务3完成
callback(); // 调用下一步
}, 3000);
}
function task4(callback){
setTimeout(() => {
console.log("task 4 complete"); // 任务4完成
callback(); // 调用下一步
}, 1500);
}
// ======================== 回调地狱示例 ========================
// 开始执行任务1
task1(() => {
// 当任务1完成后,执行任务2
task2(() => {
// 当任务2完成后,执行任务3
task3(() => {
// 当任务3完成后,执行任务4
task4(() => {
// 所有任务完成后输出最终消息
console.log("all tasks complete");
});
});
});
});- 每个任务都嵌套在前一个任务的 callback() 里。
- 因为异步执行要“等待前一个任务完成”,我们只能层层嵌套。
- 这就造成了所谓的 “callback hell”(回调地狱) —— ❗ 结构过深、难以阅读、难以维护。