async函數(shù)返回的是什么東西?
看這樣一個例子:

查看async函數(shù)的返回結果

返回結果

沒有寫return語句時

無return語句的執(zhí)行結果
async函數(shù)總是返回一個Promise對象,即使沒有return語句也會將undefined包裝為一個Promise對象進行返回,這也正是我們在koa框架中使用async函數(shù)的原因,中間件里的函數(shù)采用async函數(shù)后,里面搭配上適當?shù)?code>await就可以達到確定異步操作順序的目的。
koa中間件調(diào)用
async函數(shù),訪問localhost的7070端口時,首先調(diào)用第一個中間件,輸出11,接下來利用next將執(zhí)行權交給下一個中間件,下一個中間件返回一個Promise對象,實際情況其中可能封裝一些異步操作,第一個中間件里的await則是為了拿到上述這個異步操作的結果,若沒有寫await則無法獲得這個結果。執(zhí)行結果如下:
執(zhí)行結果
await去掉,那么等號將直接把下一個中間件返回的Promis對象賦值給res,得到的結果也就是這樣了:
缺少await時