回調函數是在函數A內傳函數B作爲參數,並且調用函數B,函數B被稱爲回調函數
看一段代碼:
let af = function(a,b){
a(b)
}
af(function(b){
console.log("我是回調函數"+'----'+b)
},"我是參數b")
很明顯其中的匿名函數就是回調函數,也可以將匿名函數封裝
let af = function(a,b){
a(b)
}
let bf = function(b){
console.log("我是回調函數"+'----'+b)
}
af(bf,"我是參數b")
那麼何爲回調地獄呢?
回調地獄其實就是回調函數的多重嵌套,函數A運用了回調函數,函數A下面的函數B又運用了回調函數,依次類推
例子:
let af = function(a){
console.log(Math.random())
a()
}
af(function(){
af(function(){
console.log("end")
})
})
打印結果爲:
0.09151653186594122
0.7165510992420432
end
這是2層的回調地獄,看起來也沒什麼複雜,那我們加多三層看看
let af = function(a){
console.log(Math.random())
a()
}
af(function(){
af(function(){
af(function(){
af(function(){
af(function(){
console.log("end")
})
})
})
})
})
這看起來是不是複雜了一些,假如af函數有多個參數的情況下,那就更復雜了,維護起來很麻煩
至於解決方法,可參考其他文章