koa 2 的 async 和 await 語法

2022-04-22 01:51:11 字數 1183 閱讀 9319

比如說我現在想完成乙個任務,但是這個任務不是立刻能完成的,需要經過一段時間後 才能有乙個結果,

在這個任務完成之前我是不知道這個任務的最終結果的,我需要等到任務完成的時候才能確切知曉結果。這就是非同步的乙個概念了。

例如我們處理 settimeout 的時候是通過**來處理的(就是任務完成再去告知結果)

我們知道,做**的時候,層級少不會影響太大,

但如果現在有乙個事件a,a會在一分鐘之後響應,a也是個非同步,a在一分鐘後才會知道b,b會在一分鐘後知道c.......

如果層數很深,那麼這個**寫起來就會變得痛苦無比,所以後來才有了 promise 物件的寫法(promise 物件通過 .then.then去做)

promise 物件也需要手動的去呼叫,最後導致呼叫也會很長,

於是出現了 async 和 await 的方法

這裡我們回看一下,koa 初始專案的介面檔案

下面我們來分析乙個例子(偽**部分)

這裡的 a 結果需要等待 await a 拿到結果後賦給 a ,

才會往下執行b,b也是一樣,再到最後c.都是依次執行完再往下執行的

這樣通俗來講,就是用同步的寫法,來完成了非同步的過程

1 router .get('/', async (ctx, next) =>) 

9 })

我們這裡在列舉乙個例項

我們在這個初始化專案介面裡寫乙個非同步測試介面,然後分析下執行順序,**如下

//

非同步測試介面

//await後面跟的是乙個promise物件,如果不寫也會預設轉換補上

//這是個非同步獲取 a,沒有再用**的方法來實現

//**執行順序分析

//一、介面被呼叫後輸出「開始」,給 變數a賦值

//二、向頁面輸出文字

//三、發現變數a的值需要請求等待回應後反饋給頁面

//------ 一、-----

router.get('/testasync',async (ctx)=>,1000);

})//

------ 二、-----

ctx.body=

})

測試介面

如果我們加大超時時間,這個停頓感會更明顯

Koa2基礎學習

01 環境準備 安裝搭建專案的開發環境 02 中介軟體用法 講解 koa2 中介軟體的用法及如何開發中介軟體 03 路由koa router 04 post get請求 常見請求方式處理 05 分層 梳理 漸近於 mvc 分層模式 06 檢視nunjucks koa 預設支援的模板引擎 07 處理靜...

koa2入門學習

koa模組 koa route 路由 route.get 路徑 路由函式 koa static 靜態資源載入 const serve 路徑 koa compose 中介軟體合成模組 koa body 提取表單post請求鍵值對,處理上傳檔案 上下文context的response和request c...

使用koa generator生成koa2專案

1 新建專案目錄,準備在 建立專案和寫 就在 建立即可。2 開啟命令列視窗。安裝koa generator,安裝命令為 npm install g koa generator 全域性安裝 3 使用koa generator生成koa2專案,輸入命令 koa2 koa demo koa demo為 專...