在上一篇中我們梳理了koa當中中間件的洋蔥模型執(zhí)行原理,并實現(xiàn)了一個可以讓洋蔥模型自動跑起來的流程管理函數(shù)。這一篇,我們再來研究一下koa當中異步回調(diào)同步化寫法的原理,同樣的,我們也會實現(xiàn)一個管理函數(shù),是的我們能夠通過同步化的寫法來寫異步回調(diào)函數(shù)。

1. 回調(diào)金字塔及理想中的解決方案

我們都知道javascript是一門單線程異步非阻塞語言。異步非阻塞當然是它的一個優(yōu)點,但大量的異步操作必然涉及大量的回調(diào)函數(shù),特別是當異步嵌套的時候,就會出現(xiàn)回調(diào)金字塔的問題,使得代碼的可讀性非常差。比如下面一個例子:

var fs = require('fs'); fs.readFile('./file1', function(err, data) { console.log(data.toString()); fs.readFile('./file2', function(err, data) { console.log(data.toString()); 
        		

網(wǎng)友評論