本篇內(nèi)容介紹了“koa中間件主要知識點有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
koa中間件中為什么必須且只能調(diào)用一次next函數(shù),可以看到如果不調(diào)用next,就不會觸發(fā)dispatch(i+1),下一個中間件就沒辦法觸發(fā),造成假死狀態(tài)最終請求超時。
koa中間件主要涉及到Promise幾個知識點:
async函數(shù)返回的是一個Promise對象【所以的中間件都會返回一個promise對象】
async函數(shù)內(nèi)部遇到await調(diào)用時會暫停執(zhí)行await函數(shù),等待返回結(jié)果后繼續(xù)向下執(zhí)行
async函數(shù)內(nèi)部發(fā)生錯誤會導(dǎo)致返回的Promise變?yōu)閞eject狀態(tài)
現(xiàn)在我們在回顧之前提出的幾個問題:
next()調(diào)用為什么需要加await
這也是洋蔥圈調(diào)用機制的核心,當(dāng)執(zhí)行到awaitnext(),會執(zhí)行next()【調(diào)用下一個中間件】等待返回結(jié)果,在接著向下執(zhí)行
koa中間件如何進行Context提供
目標(biāo):封裝Context,提供request、response的便捷操作方式
//1、定義KoaRequest、KoaResponse、KoaContext
interfaceKoaContext{
request?:KoaRequest;
response?:KoaResponse;
body:String|null;
}
constcontext:KoaContext={
getbody(){
returnthis.response!.body;
},
setbody(body){
this.response!.body=body;
}
};
functioncomposeMiddleware(middlewares:middlewareFn[]){
return(context:KoaContext)=>{
letstart=-1;
functiondispatch(i:number){
//..省略其他代碼..
//2、所有的中間件接受context參數(shù)
middleware(context,()=>{
returndispatch(i+1);
});
}
returndispatch(0);
};
}
“koa中間件主要知識點有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)頁標(biāo)題:koa中間件主要知識點有哪些-創(chuàng)新互聯(lián)
瀏覽地址:http://aaarwkj.com/article44/cdpdhe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站、做網(wǎng)站、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容