1. async await
為了更好的理解aysnc、await, 我們先請求兩個介面
1. 請求github中的使用者介面
//2. 請求github中的使用者介面後, 請求特定使用者介面請求github使用者介面
fetch("")
.then(res =>res.json())
.then(json => console.log(json))
fetch("")由此我們可以看出,**的可讀性不好,而我們這裡僅僅是兩層巢狀。那我們該怎麼解決這個問題呢?.then(res =>res.json())
.then(json =>)
我們可以嘗試使用下es7的新語法 async、await, 號稱是解決非同步請求的最終方案
3. 用async、await重寫上面兩段請求方法
//對比一下, 可以明顯看出用async、await寫出的**可讀性非常高, 就像我們寫同步請求一樣。請求github使用者介面, 再請求特定使用者
async () =>
2. 洋蔥模型
洋蔥模型是koa中的乙個重要概念, 我們通過乙個例子來看看它是什麼
const koa = require('koa')
koa()
//第乙個中介軟體
console.log("第乙個中介軟體 next執行前")
await next()
console.log("第乙個中介軟體 next執行後")
})//
第二個中介軟體
console.log('第二個中介軟體 next執行前')
await next()
console.log('第二個中介軟體 next執行後')
})//
第三個中介軟體
console.log('第三個中介軟體 next執行前')
await next()
console.log('第三個中介軟體 next執行後')
})乙個中介軟體有兩個引數, 第乙個是ctx。ctx是由koa傳入的封裝了request和response的變數,我們可以通過它訪問request和response.
另乙個是next, next是指這個中介軟體下面的那個中介軟體,koa裡面的所有功能都是通過中介軟體來完成的
在上面的**中,我們可以使用用await next()執行下乙個中介軟體
所以說, 我們應該能猜到上述**的結果了:
可以看出, 這執行過程就像乙個洋蔥, 從外到裡,再由裡到外。
koa中介軟體梳理(洋蔥模型)
中介軟體概念 koa是乙個精簡的node框架,它主要做了以下事情 基於node原生req和res為request和response物件賦能,並基於它們封裝成乙個context物件。基於async await generator 的中介軟體洋蔥模型機制。koa1和koa2在原始碼上的區別主要是於對非同...
Koa中介軟體機制的洋蔥圈模型
const koa require koa console.log 1 await next console.log 6 console.log 2 await next console.log 5 console.log 3 ctx.body hello world console.log 4 c...
koa2中介軟體機制 洋蔥圈模型
一 什麼是koa的中介軟體 通俗的講 中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以把它叫做中介軟體。在express中介軟體 middleware 是乙個函式,它可以訪問請求物件 request object req 響應物件 response object res 和 we...