官網例子:
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