什么是回調函數?回調函數有什么缺點?如何解決回調地獄問題?


回調函數應該是大家經常使用到的,以下代碼就是一個回調函數的例子:

ajax(url, () => { // 處理邏輯 }) 

但是回調函數有一個致命的弱點,就是容易寫出回調地獄(Callback hell)。假設多個請求存在依賴性,你可能就會寫出如下代碼:

ajax(url, () => { // 處理邏輯 ajax(url1, () => { // 處理邏輯 ajax(url2, () => { // 處理邏輯 }) }) }) 

以上代碼看起來不利於閱讀和維護,當然,你可能會想說解決這個問題還不簡單,把函數分開來寫不就得了

function firstAjax() { ajax(url1, () => { // 處理邏輯 secondAjax() }) } function secondAjax() { ajax(url2, () => { // 處理邏輯 }) } ajax(url, () => { // 處理邏輯 firstAjax() }) 

以上的代碼雖然看上去利於閱讀了,但是還是沒有解決根本問題。

回調地獄的根本問題就是:

  1. 嵌套函數存在耦合性,一旦有所改動,就會牽一發而動全身
  2. 嵌套函數一多,就很難處理錯誤

當然,回調函數還存在着別的幾個缺點,比如不能使用try catch捕獲錯誤,不能直接return


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM