Koa 是如何在沒有 async await 的情況下實現洋蔥模型的?

Mondo 科技 更新 2024-03-07

在不async/await,KOA 通過使用 ES6 的生成器函式來實現洋蔥模型。 具體來說,koa 中介軟體函式是帶有next呼叫中介軟體函式時呼叫引數生成函式next方法,它暫停當前執行,移動到下乙個中介軟體函式,直到執行最後乙個中介軟體函式,然後將執行許可權返回給上乙個中介軟體函式並繼續執行以下 **。 這個過程就像一層一層地剝洋蔥,因此得名洋蔥模型。

下面是使用 generator 函式實現的簡單 koa 中介軟體函式:

function* mymiddleware(next)
在這個中介軟體函式中,yield next表示當前執行已暫停,正在執行下乙個中介軟體函式。 假設我們有兩個中介軟體函式middleware1middleware2,它們的**如下:

function* middleware1(next) function* middleware2(next)
我們可以使用它compose函式將它們組合成乙個洋蔥模型:

scsscopy codeconst compose = require('koa-compose');const app = compose([middleware1, middleware2]);app();
在此示例中,compose該函式將middleware1middleware2變成乙個單一的功能app,然後呼叫該函式來執行整個中介軟體鏈。 執行結果如下:

sqlcopy codemiddleware1 startmiddleware2 startmiddleware2 endmiddleware1 end
如您所見,此結果與洋蔥模型的特徵一致。

相關問題答案

    在預警中沒有靈魂是身體

    亞健康是指人體處於健康與疾病之間的一種狀態,通常表現為身體疲勞 注意力不集中 情緒低落等。以下是一些預防亞健康的方法 .健康飲食 保持均衡飲食,多吃蔬菜 水果 全穀物和蛋白質,少攝入油膩和加工食品。.適度運動 每週進行適度的運動,如散步 跑步 游泳等,可以幫助增強身體的免疫力,改善心理健康。.睡個好...

    烏克蘭懸而未決,美國沒有錢,歐盟有一堵牆

    據報道,澤連斯基日前前往美國,想要億美元,主要是從美國購買 但結果拜登只批准了億美元,這甚至不是零頭。這兩天,我又去了歐盟,想要億歐元的財政援助計畫,但歐盟也沒有達成協議。重點 也是不可能的,歐盟早就說 庫存已經觸底反彈。美國沒有給錢,要歐盟要錢就更難了,畢竟歐盟需要超過個成員國同意給錢。既然美國大...

    沒有信用記錄 如何在美國租房?

    在美國租房時,沒有信用記錄可能具有挑戰性。信用記錄通常是房東評估租戶的最重要標準之一。但是,對於沒有信用記錄的人來說,並非沒有租房的機會。以下是一些可以幫助您在美國租房的方法和建議。首先,您可以考慮與他人簽訂租賃物業的合同。找乙個有良好信用記錄的朋友 親戚 朋友或室友,他們可以作為共同簽署人,幫助你...

    我們出生前在哪裡?

    簡介 人們對出生前的存在和記憶有各種各樣的假設和看法。有些人認為我們的生命是迴圈的一部分,在前世和轉世中迴圈。是的教這種觀點認為,我們在出生之前就住在天堂,等待進入母親的子宮。還有一種觀點認為,我們與宇宙合而為一,在集體意識中獲得智慧和知識。然而科學沒有確鑿的證據支援這些觀點。從哲學關於我們出生前在...

    為什麼今年沒有發布iPhone SE4?

    作為一款起價超過元的廉價版iPhone,iPhone SE備受期待。蘋果原本計畫在今年向大家發布iPhone SE,但遺憾的是,由於種種原因,iPhone SE可能會推遲到年。為什麼今年沒有發布iPhone SE?iPhone SE延遲背後的原因是什麼?一 蘋果自主研發的G基帶進展緩慢 蘋果自研G基...