Koa2中介軟體實現的原理剖析

2022-09-27 21:55:19 字數 1316 閱讀 2008

官網例子:

const koa = require('koa');

koa();

//logger

await next();

const rt = ctx.response.get('x-response-time');

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

});//

x-response-time

const start =date.now();

await next();

const ms = date.now() -start;

ctx.set('x-response-time', `$ms`);

});//

response

ctx.body = 'hello world';

});根據中介軟體的執行順序,我們可以得到一下步驟:

1.logger中介軟體 執行了 await next()將執行權移交給了下一個中介軟體x-response-time

2.x-response-time中介軟體 記錄了當前的時間,把執行權移交給了下一個中介軟體response

3.response中介軟體 返回了’hello world’,把執行權還給了x-response-time

4.x-response-time 記錄了當前時間 - 執行開始時間,並在respones header中記錄下來,把執行權移交給了logger中介軟體

5.logger中介軟體在response中獲取到x-response-time,並列印相關結果。

const http = require('http');

//組合中介軟體

function

compose(middlewarelist)

catch

(err)

}return dispatch(0)

}}class koamiddleware

//核心方法

use(fn)

//處理中介軟體的 http 請求

handlerequest(ctx, middleware)

//將 req res 組合成為 ctx

createcontext(req, res)

return

ctx }

callback()

}listen(...args)

}module.exports = koamiddleware