const Koa = require('koa');
const app = new Koa()
//應用程序對象 中間件
// 發送HTTP KOA 接手HTTP
//中間件(其實就是 函數)
function test(){
console.log("seven month");
}
//當請求發送過來的時候,將函數(中間件)註冊到程序上
//前端發送一個http請求 來觸發中間件
//koa 中 只會執行第一個中間件
app.use(async(ctx, next)=>{
//ctx 上下文
// next 下一個中間函數
console.log("7")
const a = await next() //調用下一個中間件
// await 能夠將promise 中對象 值 直接獲取(不經過then)
// await 對錶達式求值
//await 阻塞線程(異步) (將異步變爲同步)
console.log(a)
// a.then((res)=>{
// console.log(res)
// })
console.log("8")
})
// 洋蔥模型(若是有await, 則須要在每一箇中間件函數前面加async next前面加上 await, ha)
app.use(async(ctx, next) =>{
console.log("9")
const res = await axios.get("http://7yue.pro")
next()
// 對資源的操做 都是異步的 讀文件 發送http請求 操做數據庫
console.log('10')
return "seven"
})
// 打印結果爲7 9 10 8
// 中間件(函數) return 會被強制轉換成一個 Promise
app.listen(3000);