Koa中介軟體機制的洋蔥圈模型

2021-09-13 15:17:17 字數 987 閱讀 4793

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);

}); console.log('listenning on 3000');

});

上面的**執行後會輸出123456,就像乙個洋蔥一樣,從外層進去,然後碰到next()就執行下乙個中介軟體,執行完成後再返回回來。先假設我們已經實現了next為下個中介軟體這段**,上面的執行邏輯就很清楚了,先輸出1,然後進入下乙個中介軟體,去處理2,同理最後後面都處理完成後處理55處理完成後第二個中介軟體結束,然後第乙個中介軟體再處理6

所以現在就是怎麼實現這個**。通過看koa的原始碼我們可以發現它是通過koa-compose這個庫實現的,**很短,如下:

function compose (middleware)  catch (err) 

}}}

核心**就是return promise.resolve(fn(context, dispatch.bind(null, i + 1)));這裡了,每次執行中介軟體時,會將第二個中介軟體作為函式的第二個引數傳進去。這也就和上面的async (ctx, next) => {}寫法對應上了,所以執行next()就可以執行下乙個中介軟體了。

koa2中介軟體機制 洋蔥圈模型

一 什麼是koa的中介軟體 通俗的講 中介軟體就是匹配路由之前或者匹配路由完成做的一系列的操作,我們就可以把它叫做中介軟體。在express中介軟體 middleware 是乙個函式,它可以訪問請求物件 request object req 響應物件 response object res 和 we...

koa中介軟體梳理(洋蔥模型)

中介軟體概念 koa是乙個精簡的node框架,它主要做了以下事情 基於node原生req和res為request和response物件賦能,並基於它們封裝成乙個context物件。基於async await generator 的中介軟體洋蔥模型機制。koa1和koa2在原始碼上的區別主要是於對非同...

2 Koa中介軟體與洋蔥模型

1.async await 為了更好的理解aysnc await,我們先請求兩個介面 1.請求github中的使用者介面 請求github使用者介面 fetch then res res.json then json console.log json 2.請求github中的使用者介面後,請求特定使...