koa 中介軟體流程控制

2022-02-09 04:33:01 字數 996 閱讀 4879

koa中介軟體的的執行順序是洋蔥模型,外層逐步向內,執行到最中間再逐步向外擴充套件,實現這個順序的模型需要依賴於generator函式,它可以暫停執行將控制權交出,等到執行next再得到執行權繼續執行,我們需要做的就是將generator串聯起來,將後面的generator函式跟在上一層函式的yield語句之後,可以看作後面的函式是next的引數,這樣我們就形成了乙個串聯,它的執行順序就是我們前面所提到的洋蔥模型。

在koa中,實現上面所說的串聯函式就是利用了compose,下面是compose的大概實現(在koa中叫koa-compose):

function compose (middlewares) ();

while (i--)

return next;

}}

在koa的原始碼中有這樣的**:

var fn = this.experimntal

? compose_es7(this.middleware)

: co.wrap(compose(this.middleware));

//達到了洋蔥模型的效果

function *()

上面我們看到通過使用koa-compose將中介軟體聯絡在一起(串聯),可是在koa中需要呼叫next()方法才可以驅動函式向下執行。這時候就需要用到co模組。它可以幫我們自動管理generator的next,並根據呼叫返回value做出不同的響應;如果遇到另外乙個generator,co會繼續呼叫自己,這就是我們為什麼需要co。

簡單實現原理:

function run (gen)  else 

function next () else if (typeof g.next === 'function')

} next();

}

通過遞迴的方式(判斷是否執行結束),來驅動generator的執行。

關於co模組的補充(es6)

koa 中介軟體

什麼是中介軟體 中介軟體是匹配路由之前或匹配路由完成做的一系列操作 中介軟體是乙個函式,它可以訪問請求物件和響應物件,和web應用中處理請求 響應迴圈流程 變數next,呼叫它,將控制權交給下乙個中介軟體函式 中介軟體的功能 koa中的幾種中介軟體 應用級中介軟體 路由級中介軟體 錯誤處理中介軟體 ...

koa 中介軟體

什麼是 koa 的中介軟體 通俗的講 中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以 把它叫做中介軟體。在express中介軟體 middleware 是乙個函式,它可以訪問請求物件 requestobject req 響應物件 responseobject res 和 web...

koa 中介軟體

中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以把它叫做中介軟體。在express 中介軟體 middleware 是乙個函式,它可以訪問請求物件 request object req 響應物件 response object res 和web 應用中處理請求 響應迴圈流程中的中...