2 Koa中介軟體與洋蔥模型

2022-04-03 05:04:50 字數 1379 閱讀 3866

1. async await

為了更好的理解aysnc、await, 我們先請求兩個介面

1. 請求github中的使用者介面

//

請求github使用者介面

fetch("")

.then(res =>res.json())

.then(json => console.log(json))

2. 請求github中的使用者介面後, 請求特定使用者介面  

fetch("")

.then(res =>res.json())

.then(json =>)

由此我們可以看出,**的可讀性不好,而我們這裡僅僅是兩層巢狀。那我們該怎麼解決這個問題呢?

我們可以嘗試使用下es7的新語法 async、await, 號稱是解決非同步請求的最終方案

3. 用async、await重寫上面兩段請求方法

//

請求github使用者介面, 再請求特定使用者

async () =>

對比一下, 可以明顯看出用async、await寫出的**可讀性非常高, 就像我們寫同步請求一樣。

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...