NodeJS回調地獄


NodeJS回調地獄

一.為什么要寫這篇文章

  前段時間和朋友做一個小程序,在很多地方如果用戶沒有登錄,因為小程序的升級,不能直接通過現有的API來獲取用戶的信息,必須得通過點擊按鈕的方式,首先獲取用戶的信息后,進入回調方法,通過switchTab到達登錄頁面,登錄成功后在回到之前的頁面。整個邏輯非常的簡單,代碼實現起來也簡單,但是在嵌套上真心惡心到我了。這讓我不禁的想到了NodeJS,至於為什么想到NodeJS,你品,你用心品。這個問題,在行業內,大家都把他叫做“回調地獄”。為什么會產生回調地獄呢?因為NodeJS推崇異步編程,那么恰恰是異步編程就容易導致“回調地獄”。

                                                                                                           

二.案例演示

       現假設這樣一個場景,一個程序員去面試,需要經過三輪面試,第二、三輪面試必須要拿到上輪面試通過后的結果才能進行下場面試,而每場面試需要等待一段時間后才給回復,下面通過代碼來模擬一下這個場景:

// 面試
function interview(callback) {
    setTimeout(() => {
        //模擬出當前面試, 有60%通過的概率
        if(Math.random() <= 0.6) {
            callback(null, 'success')
        }else {
            callback(new Error('error'))
        }
    }, 100)
}

// 第一輪面試
interview((e) => {
    if(e) {
        return console.log('fail in 1st round');    
    }

    // 第一輪面試通過
    console.log('success in 1th round');
    
    //第二輪面試
    interview((e) => {
        if(e) {
            return console.log('fail in 2nd round');    
        }
        //第二輪面試通過
        console.log('success in 2nd round');

        //第三輪面試
        interview(e => {
            if(e) {
                return console.log('fail in 3rd round');    
            }
            console.log('success');
        })
    })
})

三.怎么解決回調地獄?

  那么如何解決回調地獄呢?可以使用Promise、async的方式,這將是在下一篇文章來講解的。

 


免責聲明!

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



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