async await非同步語法糖

2022-07-09 11:00:15 字數 767 閱讀 7742

之前一直忙於webgl的學習,es6、node以及前端框架的學習稍有耽擱,今天刷到乙個題,也趁此機會加深一下對es6的學習:

寫過es6的都知道,es6提供了乙個非同步物件promise用來編寫非同步**;

我們在寫promise的時候會通過then來處理非同步事件返回的結果,then方法接收兩個匿名函式(**函式)作為引數來處理對應的兩種狀態;

所以寫法看起來是這樣的:

執行結果不言而喻;

而對於async-await語法糖,我們可以這樣寫:

沒有任何**函式的影子,看上去就和同步**一樣,但是注意了,途中標註的①這塊,在這個try-catch**塊中,①處以及後面的**只有等work這個非同步物件的狀態變為resolve後,後續**才會執行;

我們稍微修改上述**:

控制台列印如下:

非同步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 表示...

python 語法糖太多 python 語法糖

匿名函式 lamda表示式 def add x,y return x y 等價於f lamda x,y x y f 1,2 三元表示式 wefx 1 y 2 c x if x map對映關係 def square x return x x list x 1,3,10 list r map squar...