今天小編給大家分享一下es6中await和async有哪些作用的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
創(chuàng)新互聯(lián)建站主營(yíng)北海網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶App定制開(kāi)發(fā),北海h5小程序開(kāi)發(fā)搭建,北海網(wǎng)站營(yíng)銷推廣歡迎北海等地區(qū)企業(yè)咨詢
es6中await和async的作用分別是:1、async用于聲明一個(gè)函數(shù)是異步執(zhí)行,并返回一個(gè)Promise對(duì)象;2、await用于等待一個(gè)異步方法執(zhí)行完成,因?yàn)閍wait只能用于async函數(shù)中,所以用于等待一個(gè)async函數(shù)的返回值。
本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。
async 用于申明一個(gè) function 是異步的,而 await 用于等待一個(gè)異步方法執(zhí)行完成。
await只能放在async函數(shù)里
await后面接一個(gè)會(huì)return new promise的函數(shù)并執(zhí)行它。
在遇到await時(shí),會(huì)阻塞后面的代碼,先執(zhí)行async外面的同步代碼,
如果等待的是promise,等Promise完成,然后把 resolve 的參數(shù)作為 await 表達(dá)式的運(yùn)算結(jié)果。
如果等待的是表達(dá)式,執(zhí)行完async外面同步代碼后再回來(lái)繼續(xù)往下執(zhí)行
async
async 函數(shù)(包含函數(shù)語(yǔ)句、函數(shù)表達(dá)式、Lambda表達(dá)式)會(huì)返回一個(gè) Promise 對(duì)象。
如果在函數(shù)中 return 一個(gè)直接量,async 會(huì)把這個(gè)直接量通過(guò) Promise.resolve() 封裝成 Promise 對(duì)象。
如果 async 函數(shù)沒(méi)有返回值,又該如何?很容易想到,它會(huì)返回 Promise.resolve(undefined)。
Promise 的特點(diǎn)——無(wú)等待,所以在沒(méi)有 await 的情況下執(zhí)行 async 函數(shù),它會(huì)立即執(zhí)行,返回一個(gè) Promise 對(duì)象,并且,絕不會(huì)阻塞后面的語(yǔ)句。這和普通返回 Promise 對(duì)象的函數(shù)并無(wú)二致。
await
一般來(lái)說(shuō),都認(rèn)為 await 是在等待一個(gè) async 函數(shù)完成。不過(guò)按語(yǔ)法說(shuō)明,await 等待的是一個(gè)表達(dá)式,這個(gè)表達(dá)式的計(jì)算結(jié)果是 Promise 對(duì)象或者其它值(換句話說(shuō),就是沒(méi)有特殊限定)。
因?yàn)?async 函數(shù)返回一個(gè) Promise 對(duì)象,所以 await 可以用于等待一個(gè) async 函數(shù)的返回值,即promise的resolve(這里的值)。
await 不僅僅用于等 Promise 對(duì)象,它可以等任意表達(dá)式的結(jié)果,所以,await 后面實(shí)際是可以接普通函數(shù)調(diào)用或者直接量的。
如果它等到的不是一個(gè) Promise 對(duì)象,那 await 表達(dá)式的運(yùn)算結(jié)果就是它等到的東西。
為什么要用await
為了使我們的異步代碼,更像同步的代碼
有多個(gè)promise,怎么拿到所有的promise都結(jié)束后的結(jié)果
因?yàn)镻romise.all()返回的也是一個(gè)promise所以如果要使用await拿到多個(gè)promise的值,可以直接await Promise.all()
以上就是“es6中await和async有哪些作用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。