async await實現非同步呼叫

2021-09-26 14:36:00 字數 603 閱讀 6610

async/await使得非同步**看起來像同步**

async函式會隱式地返回乙個promise,而promise的reosolve值就是函式return的值

async/await不需要寫.then,不需要寫匿名函式處理promise的resolve值,也不需要定義多餘的data變數,還避免了巢狀**

async宣告乙個非同步函式

await只能在async函式中使用,後面跟乙個promise物件

所以在模擬非同步呼叫函式時,函式體內返回promise

async/await缺點
async函式裡,無論是promise reject的資料還是邏輯報錯,都會被默默吞掉。所以最好把await放入try{}catch{}中,或者在async返回的promise物件中使用.cache捕獲錯誤。

實現

專案中實現三個不同的介面呼叫,三個介面是相互關聯的,前乙個介面的返回值是後乙個介面的引數,如果使用promise實現的話,只能實現非同步呼叫,但是無法相互關聯,也就是資料不互通,所以使用async/await實現

**實現

實現非同步呼叫Web Service

普通呼叫web service的方法,在web service執行期間客戶端會一直等待服務執行完畢才能響應。從而造成客戶端ui執行緒的阻塞假死現象。這時候,非同步呼叫就顯得很有用,它可以讓客戶端在呼叫web service時,不至於阻塞客戶端的ui執行緒導致假死,還可以在呼叫web service的...

非同步async await寫法

async await 用asyncio提供的 asyncio.coroutine可以把乙個generator標記為coroutine型別,然後在coroutine內部用yield from呼叫另乙個coroutine實現非同步操作。為了簡化並更好地標識非同步io,從python 3.5開始引入了新...

非同步操作async await

async函式的特點 例 router.get testasync async ctx 1000 const b await 123const c await new promise resolve,reject 2000 ctx.body 看看 的執行過程,它裡面遇到了await,await 表示...