koa被認(rèn)為是第二代web后端開發(fā)框架,相比于前代express而言,其最大的特色無疑就是解決了回調(diào)金字塔的問題,讓異步的寫法更加的簡潔。在使用koa的過程中,其實(shí)一直比較好奇koa內(nèi)部的實(shí)現(xiàn)機(jī)理。最近終于有空,比較深入的研究了一下koa一些原理,在這里會(huì)寫一系列文章來記錄一下我的學(xué)習(xí)心得和理解。

在我看來,koa最核心的函數(shù)是大名鼎鼎的co,koa正是基于這個(gè)函數(shù)實(shí)現(xiàn)了異步回調(diào)同步化,以及中間件流程控制。當(dāng)然在這篇文章中我并不會(huì)去分析co源碼,我打算在整個(gè)系列文章中,一步一步講解如何實(shí)現(xiàn)koa中間件的流程控制原理,koa的異步回調(diào)同步寫法實(shí)現(xiàn)原理,最后在理解這些的基礎(chǔ)上,實(shí)現(xiàn)一個(gè)簡單的類似co的函數(shù)。

本篇首先只談一談koa的中間件流程控制原理。

1. koa中間件執(zhí)行流程

關(guān)于koa中間件如何執(zhí)行,官網(wǎng)上有一個(gè)非常經(jīng)典的例子,有興趣的可以去看看,不過這里,我想把它修改的更簡單一點(diǎn):