中間件級聯(lián)

Koa是中間件通過一種更加傳統(tǒng)(您也許會很熟悉)的方式進(jìn)行級聯(lián), 摒棄了以往node頻繁的回調(diào)函數(shù)造成的復(fù)雜代碼邏輯鸣皂。我們通過generators來實現(xiàn)“真正”的中間件抓谴。
Connect簡單 地將控制權(quán)交給一系列函數(shù)來處理,直到函數(shù)返回寞缝。與之不同癌压,當(dāng)執(zhí)行yield next 語句時,Koa暫停了該中間件荆陆,繼續(xù)執(zhí)行下一個符合請求的中間件滩届,然后控制權(quán)再逐級返回給上層中間件。

下面的例子頁面返回“Hello World"被啼,然而當(dāng)請求開始時帜消, 請求經(jīng)過x-response-time和logging中間件,并記錄中間件執(zhí)行起始時間趟据。然后將控制權(quán)交給response中間件券犁。當(dāng)中間件運行到y(tǒng)ield next時,函數(shù)扶起并將控制權(quán)交給下一個中間件汹碱。當(dāng)沒有中間件執(zhí)行yield next時粘衬, 程序棧會逆序喚起被掛起的中間件來執(zhí)行接下來的代碼。

var koa = require('koa');
var app = koa();

// x-response-time

app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  this.set('X-Response-Time', ms + 'ms');
});

// logger

app.use(function *(next){
  var start = new Date;
  yield next;
  var ms = new Date - start;
  console.log('%s %s - %s', this.method, this.url, ms);
});

// response

app.use(function *(){
  this.body = 'Hello World';
});

app.listen(3000);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稚新,隨后出現(xiàn)的幾起案子勘伺,更是在濱河造成了極大的恐慌,老刑警劉巖褂删,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件飞醉,死亡現(xiàn)場離奇詭異,居然都是意外死亡屯阀,警方通過查閱死者的電腦和手機缅帘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來难衰,“玉大人钦无,你說我怎么就攤上這事「窍” “怎么了失暂?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鳄虱。 經(jīng)常有香客問我弟塞,道長,這世上最難降的妖魔是什么拙已? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任决记,我火速辦了婚禮,結(jié)果婚禮上悠栓,老公的妹妹穿的比我還像新娘霉涨。我一直安慰自己,他們只是感情好惭适,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楼镐,像睡著了一般癞志。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上框产,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天凄杯,我揣著相機與錄音,去河邊找鬼秉宿。 笑死戒突,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的描睦。 我是一名探鬼主播膊存,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了隔崎?” 一聲冷哼從身側(cè)響起今艺,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爵卒,沒想到半個月后虚缎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡钓株,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年实牡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轴合。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡创坞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出值桩,到底是詐尸還是另有隱情摆霉,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布奔坟,位于F島的核電站携栋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咳秉。R本人自食惡果不足惜婉支,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澜建。 院中可真熱鬧向挖,春花似錦、人聲如沸炕舵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咽筋。三九已至溶推,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奸攻,已是汗流浹背蒜危。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留睹耐,地道東北人辐赞。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像硝训,于是被迫代替她去往敵國和親响委。 傳聞我的和親對象是個殘疾皇子新思,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1.簡書 koa是由Express原班人馬打造,致力于成為一個更小晃酒、更富有表現(xiàn)力表牢、更健壯的Web框架。使用koa編...
    不去解釋閱讀 2,659評論 0 11
  • 前言 原文地址 最近幾天花了比較長的時間在koa(1)的源碼分析上面,初次看的時候蛔翅,?被中間件執(zhí)行那段整的暈乎乎的...
    謙龍閱讀 1,508評論 0 9
  • koa2 是由express原班人馬打造的新一代web后端框架,相比express koa2更輕,代碼也更優(yōu)雅擺脫...
    賤賤賤賤賤閱讀 17,474評論 1 8
  • 前幾日敲茄,在網(wǎng)易云上聽見一首曲子,作者為一位癌晚期粉絲寫的山析,以作對粉絲求生的鼓勵堰燎。 還記得,全曲無詞笋轨,僅有一句介...
    能見未來閱讀 248評論 0 2
  • 文/熠歆 只愿有個好結(jié)果! 早安钾挟,全世界洁灵! 周二 晴 貴州普安
    熠歆閱讀 151評論 2 1