我想深入了解當(dāng)我們調(diào)用next(c)函數(shù)中間件函數(shù)時發(fā)生了什么Process()。看看main()我的理解,我們通過調(diào)用將該P(yáng)rocess()函數(shù)附加到 echoContext對象的中間件函數(shù)列表中Use()。但是,查看echo 源代碼,我不確定中間件示例中的函數(shù)next(c)中的調(diào)用如何查看所有上下文的中間件函數(shù)。Process()即使搜索源代碼后我似乎也找不到一些東西:(1) 函數(shù)定義在哪里echo.HandlerFunc定義?我看到WrapHandler但它是導(dǎo)出的并且沒有使用,echo.go所以我很困惑當(dāng)調(diào)用我們跳轉(zhuǎn)到源代碼next(c)中的哪一行代碼時會發(fā)生什么。echo.go(2) 看起來循環(huán)發(fā)生在調(diào)用時,applyMiddleware因為這似乎循環(huán)了上下文的中間件函數(shù)列表中保存的所有中間件函數(shù),但我看不到如何調(diào)用該方法,除非您調(diào)用導(dǎo)出的函數(shù)WrapMiddleware等ServeHTTP。
1 回答

UYOU
TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊
next(c)
不循環(huán)任何東西。next
是作為函數(shù)參數(shù)接收的變量,其中包含函數(shù)。next(c)
調(diào)用該函數(shù)。實(shí)際上,它是鏈的下一部分 - 可能是下一個中間件,也可能是最終的請求處理程序。當(dāng)返回func
的Process
被調(diào)用時,它本身可能已被next
之前的中間件調(diào)用。
沒有涉及任何魔法,庫中也沒有隱藏任何東西,它只是一系列函數(shù)調(diào)用。
- 1 回答
- 0 關(guān)注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消