什么是回调地狱
因为设计原因导致 Javascript 这门语言是单线程(顺序)执行的,这就导致一些耗时的操作会阻塞当前运行线程。
为了解决这个问题,机智的开发者们引入了“同步”和“异步”这两个概念。
打个很简单的比方,去肯德基买汉堡,在柜台上排队买就是同步的,因为必须等待前面的人买好取到餐才能轮到我们;而使用手机点餐就是异步的,下完单之后我们可以想干嘛干嘛,等到收银员喊到我的号的时候再去取餐即可。
在以上场景中,去取餐就是我向肯德基注册的一个回调函数,当我的餐准备就绪,收银员喊我,就相当于调用了回调函数。
简单回调地狱如下所示。
//回调地狱
setTimeout(function () { //第一层
console.log('武林要以和为贵');
setTimeout(function () { //第二程
console.log('要讲武德');
setTimeout(function () { //第三层
console.log('不要搞窝里斗');
}, 1000)
}, 2000)
}, 3000)
回调地狱就是为是实现代码顺序执⾏⽽出现的⼀种操作,它会造成我们的代码可读性⾮常差,后期不好维护。