溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

es6中await和async有哪些作用

發(fā)布時間:2022-05-10 15:30:36 來源:億速云 閱讀:374 作者:iii 欄目:web開發(fā)

今天小編給大家分享一下es6中await和async有哪些作用的相關(guān)知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

es6中await和async的作用分別是:1、async用于聲明一個函數(shù)是異步執(zhí)行,并返回一個Promise對象;2、await用于等待一個異步方法執(zhí)行完成,因為await只能用于async函數(shù)中,所以用于等待一個async函數(shù)的返回值。

本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。

es6中await和async有什么作用

async 用于申明一個 function 是異步的,而 await 用于等待一個異步方法執(zhí)行完成。

await只能放在async函數(shù)里

await后面接一個會return new promise的函數(shù)并執(zhí)行它。

在遇到await時,會阻塞后面的代碼,先執(zhí)行async外面的同步代碼,

如果等待的是promise,等Promise完成,然后把 resolve 的參數(shù)作為 await 表達式的運算結(jié)果。

如果等待的是表達式,執(zhí)行完async外面同步代碼后再回來繼續(xù)往下執(zhí)行

async

async 函數(shù)(包含函數(shù)語句、函數(shù)表達式、Lambda表達式)會返回一個 Promise 對象。

如果在函數(shù)中 return 一個直接量,async 會把這個直接量通過 Promise.resolve() 封裝成 Promise 對象。

如果 async 函數(shù)沒有返回值,又該如何?很容易想到,它會返回 Promise.resolve(undefined)。

Promise 的特點——無等待,所以在沒有 await 的情況下執(zhí)行 async 函數(shù),它會立即執(zhí)行,返回一個 Promise 對象,并且,絕不會阻塞后面的語句。這和普通返回 Promise 對象的函數(shù)并無二致。

await

一般來說,都認為 await 是在等待一個 async 函數(shù)完成。不過按語法說明,await 等待的是一個表達式,這個表達式的計算結(jié)果是 Promise 對象或者其它值(換句話說,就是沒有特殊限定)。

因為 async 函數(shù)返回一個 Promise 對象,所以 await 可以用于等待一個 async 函數(shù)的返回值,即promise的resolve(這里的值)。

await 不僅僅用于等 Promise 對象,它可以等任意表達式的結(jié)果,所以,await 后面實際是可以接普通函數(shù)調(diào)用或者直接量的。

如果它等到的不是一個 Promise 對象,那 await 表達式的運算結(jié)果就是它等到的東西。

為什么要用await

為了使我們的異步代碼,更像同步的代碼

有多個promise,怎么拿到所有的promise都結(jié)束后的結(jié)果

因為Promise.all()返回的也是一個promise所以如果要使用await拿到多個promise的值,可以直接await Promise.all()

以上就是“es6中await和async有哪些作用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習更多的知識,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI