koa2 中介軟體裡面的next到底是什麼

2022-02-14 11:22:21 字數 1225 閱讀 5040

const koa = require('koa');

koa();

const start =date.now();

await next();

const ms = date.now() -start;

console.log(`$ $ -$`);

});1.首先看 use ,就是push乙個函式到 this.middleware

2.再看listen, 方法裡面 http.createserver(this.callback), this.callback返回的是 function(req,res)的函式,連起來就是 http.createserver(function(req,res)),標準的http建立服務的方法

3.最後看callback,裡面的核心方法,compose(this.middleware) 返回乙個promise,處理完畢後再執行 handleresponse

這三個連起來,就是每次請求的時候,先進入callback, compose中介軟體,執行完畢後,接著處理請求。那剩下的重點變為 compose 

與上面的引數對應關係如下

context :ctx,

next : function next()

所以 await next() 就等於 awaitfunction next() , 而 dispatch(i+1)就進入了下乙個中介軟體了。

核心就是 dispatch(i+1),也就是dispatch(1) , dispatch本身返回promise, 所以你就在這裡 await 。

依此類推 disptach(1) 會執行 this.middleware[1],  那個時候 fn就為 logger執行的函式,就這麼推下去。

關於結束,還是 next 不存在的時候。 結果完畢後,再依次往上走。

所以執行的順序是越先註冊越後執行, 當然還得看你 await next() 放在什麼位置。 因為這裡我的 console.log都放在了 await的後面,都放到前面,結果如何,親自測試一下嘍。

koa2 mysql 中介軟體 Koa2 中介軟體

1.什麼是koa2中介軟體?二 常用的五個中介軟體 1.koa 面向node.js的表示式http中介軟體框架,使web應用程式和api更加令人愉快地編寫。koa的中介軟體堆疊以類似堆疊的方式流動,允許您執行下游操作,然後過濾和處理上游的響應。ctx.body hello world 2.koa r...

koa2中介軟體原理

koa2中介軟體的執行就像洋蔥圈一樣,從外面到最裡面,再從最裡面到最外面。const koa require koa logger console.log 第一層洋蔥圈開始 await next const rt ctx.response.get x response time console.lo...

koa2中介軟體簡易分析

koa generator支援koa1.x與koa2.x node 7.6 babel 安裝完成腳手架後,選擇不同的命令koa koa2。全域性安裝 npm install g koa generator快速建立專案結構,直接使用koa2命令即可,簡單粗暴 各可選引數的含義在koa generato...