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的方式,這將是在下一篇文章來講解的。
