回调函数存在一个「可读性」的问题。
而可读性多指回调地狱(Callback hell),如果多个请求存在依赖性,那么就可能写出如下代码:
ajax(url, () => { // 处理逻辑 ajax(url1, () => { // 处理逻辑 ajax(url2, () => { // 处理逻辑 }) }) })
我们可以看下这段代码,显然是不利于阅读和维护的。这就是「回调地狱」。
当然你可能会说,解决这个问题还不简单,将函数分开来写不就行了?
function firstAjax() { ajax(url1, () => { // 处理逻辑 secondAjax() }) } function secondAjax() { ajax(url2, () => { // 处理逻辑 }) } ajax(url, () => { // 处理逻辑 firstAjax() })
上述代码表面上看有利于阅读了,但是治标不治本。
回调地狱的根本问题是:
1、嵌套函数存在「耦合性」,一旦有变动,就会牵一发而动全身。
2、嵌套函数一多就会导致,很难处理错误。
当然了,这篇文章主要是来介绍「回调地狱是什么?」,关于回调地狱如何解决这里不作讨论了。