koa框架中對next 的理解

2021-08-28 11:39:26 字數 874 閱讀 9558

const one = (ctx, next) => 

const two = (ctx, next) =>

const three = (ctx, next) =>

輸出結果:

>> one

>> two

>> three

<< three

<< two

<< one

我們在定義express中介軟體函式的時候都會將第三個引數定義為next,這個next函式主要負責將控制權交給下乙個中介軟體,如果當前中介軟體沒有終結請求,並且next沒有被呼叫,那麼當前中介軟體的請求將被掛起,等到next()後的中介軟體執行完再返回繼續執行。總結來說,就是:

從第乙個中介軟體開始執行,遇到next進入下乙個中介軟體,一直執行到最後乙個中介軟體,在逆序,執行上乙個中介軟體next之後的**,一直到第乙個中介軟體執行結束才發出響應。如下**

one = (ctx, next) => 

console.log('<< two');

}console.log('<< one');

}

每個中介軟體預設接受兩個引數,第乙個引數是 context 物件,第二個引數是next函式。只要呼叫next函式,就可以把執行權轉交給下乙個中介軟體。每乙個中介軟體就相當於洋蔥的一層,請求從最外層進去,然後從最裡層出來,每個中介軟體都會執行兩次。three已經是最裡層的中介軟體了,所以next()只是執行next後的**,然後一層一層返回

下圖為經典的koa洋蔥模型

對KMP演算法的next陣列的理解

最近正在看 大話資料結構 在看到kmp演算法的時候怎麼進行字串匹配的基本上可以理解,但是在看原始碼求解next陣列的時候,我蒙了,一頭霧水,和我想象的完全不一樣,真的好簡潔,簡潔到我都不知道為什麼會這樣寫,我試圖 所以然,然後研究了將近三天時間,因此在這僅僅說明我對next陣列的理解。如果理解錯誤的...

對Spring框架中AOP的理解

在今天讀了文章後對aop做了一些自己的理解,現記錄於此,共同交流。springaop就是所謂的切面程式設計,但要怎麼理解這個切面程式設計呢,舉乙個例子,現在我在乙個類中有a b c三個方法,這在執行這三個方法時我想要在每個方法的執行前後各輸出日誌資訊,那麼正常的操作是在每乙個方法中都要加上輸出日誌的...

KMP中next陣列的理解

1231231234 當匹配到4的時候突然失配了,那麼我們就找兩個串,以個是以第乙個開頭,另乙個是以4前面的那個3結尾,可以相交但不可以完全相交,得到的就是123123 123123,那麼當4失配的時候就直接跳到第二個3後後面的那個1比較就行了,因為當前的這個失配點的前乙個點為尾的串和以第乙個點為起...