async await的正確使用

2022-07-01 02:24:09 字數 2281 閱讀 7471

經過一段時間的使用,對於async/await的正確使用,我總結了一下幾點:

必須使用try...catch。確保正確的流程控制。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

// resolve

function getdata() ), 1000);

});}

// reject

function getdata() ), 1000);

});}

async function hello()

async function hello() catch (e) ;}}

hello();

如果await後面的promise返回的是reject,那麼下面的同步**不會執行。所以必須使用try...catch,如果出現這種情況,

會進入catch,執行錯誤處理**。

多重巢狀時,內層的try...catch必須有返回值,且catch中的返回值是promise.reject。返回值是promise

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

3031

3233

// resolve

function getdata() ), 1000);

});}

// reject

function getdata() ), 1000);

});}

async function hello() catch (e) --- hello catch`);

return promise.reject(e);

// return promise.resolve(e)}}

async function world() catch (e) ;

console.log(`$ --- world catch`);}}

world();

world使用非同步方式呼叫了hello,如果hello中的getdata方法丟擲了錯誤,會進入hello裡的catch,則catch中也必須有返回值,否則,將不會進入world中的catch,而是繼續執行try裡面的**;如果使用了promise.resolve返回內容或者返回內容不是promise,就也是執行try裡面的**;只用返回的結果是promise且為promise.reject,才會正常的進入world中的catch

vue 的生命週期是獨立的,不會受到非同步函式的影響。

123

4567

891011

1213

1415

1617

1819

20

export default ;

},async created() ,

mounted() ,

methods: ), 1000);

});}}};

我們知道created函式會早於mounted被呼叫,但是mounted並不會等待created中的非同步函式,vue的生命週期只跟其內部的執行流程有關,不受外界的影響。

從promise到async/await

async await使用的要點

async await的使用 1 如果乙個方法標註了async,則其返回值只能是 void,task,task三者之一 2 如果非同步方法中沒有await,那麼這個方法將會以同步方式執行 3 單個async方法中可以擁有多個await 4 當遇到await表示式時,呼叫執行緒將會掛起,知道await...

使用async await 總結

async await 迴圈並行處理 同步 同一執行緒之中,順序完成不同的操作,是一種阻塞模式 後乙個請求操作需要等待前乙個操作完成之後,才能發出。非同步 需要開啟不同的執行緒,是非阻塞模式。同步類似於打 而非同步相當於發簡訊。傳送請求獲取天氣非同步操作,利用node fetch完成請求 const...

async await基本使用

asunc await的底層學習可以學習es6,它其實是乙個genterator的語法糖。執行非同步async function timer 2000 非同步promise結束 console.log ret,num 這裡等待非同步執行完,所以結果是11,11 return ret timer th...