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

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

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

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

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