摘要:在異步編程中,提供了對象的方式。例如等同于所以可以理解為生成一個實例。那么自然也可以去調(diào)用則是配合使用的。等于是等待一個返回值,等待的執(zhí)行結(jié)果。但是函數(shù)不會造成阻塞,所以配合使用,則沒有影響到外部。
在異步編程中,es6提供了promise對象的方式。
簡單的用法
var promise = new Promise((resolve,reject)=>{ if(){ resolve(res) }else{ reject(res) } }) promise.the((res)=>{}).catch((res)=>{})
而async 實則是返回了一個promise對象
async function test(){ console.log("123"); } var restult = test(); console.log(result);//=>>Promise{"123"}; //如果函數(shù)return 一個直接量,那么就等于直接去調(diào)用Promise.resolve()方法 //Promise.resolve方法也就是生成一個Promise實例,并且其直接調(diào)用resolve。 //例如 Promise.resolve("test"); //等同于 new Promise((resolve,reject)=>resolve("test")); //所以async可以理解為生成一個promise實例。 //那么自然也可以去調(diào)用.then() test.then((res)=>{})
await則是配合async使用的。await等于是等待一個返回值,等待async的執(zhí)行結(jié)果。
async function testAsync() { return Promise.resolve("hello async"); } async function test() { const res = await testAsync(); console.log(res); } test();
輸出結(jié)果就是"hello async".
await必須配合async使用,但是await的對象可以不是Promise對象,一個普通的函數(shù)也可以使用。
如果它等到的不是一個 Promise 對象,那 await 表達式的運算結(jié)果就是它等到的東西。
如果它等到的是一個 Promise 對象,await 就忙起來了,它會阻塞后面的代碼,等著 Promise 對象 resolve,然后得到 resolve 的值,作為 await 表達式的運算結(jié)果。但是async函數(shù)不會造成阻塞,所以await配合async使用,則沒有影響到外部。
async和await的作用
可以把promise 的then寫得簡潔,便于理解
流程就是生成一個async函數(shù),然后函數(shù)內(nèi)部去await一個promise對象得運行結(jié)果,再用這個結(jié)果去調(diào)用其它得Promise對象,如此得話then((res)=>{}).then((ress)=>{})。就可以寫成
var res = await foo(); var ress = await fob(res); var resss = await foc(ress)
在then鏈復(fù)雜得情況下,promise得參數(shù)傳遞非常復(fù)雜,但使用async+await得方式,就如同同步編程一般,非常清晰和流暢。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107893.html
摘要:對空數(shù)組是不會執(zhí)行回調(diào)函數(shù)的。就算改變已經(jīng)發(fā)生了,你再對對象添加回調(diào)函數(shù),也會立即得到這個結(jié)果。用來表示函數(shù)是異步的,定義的函數(shù)會返回一個對象,可以使用方法添加回調(diào)函數(shù)。 介紹 通過Array/Object/Function基礎(chǔ)類型編寫。 看到自己不了解的或者比較新穎的用法便會寫上。 不定時更新內(nèi)容。 本文首發(fā)于我的個人網(wǎng)站: Timbok.top 目錄 Array 迭代方法 ...
摘要:版本以及之前,本身還沒有異步執(zhí)行代碼的能力,宿主環(huán)境傳遞給引擎,然后按順序執(zhí)行,由宿主發(fā)起任務(wù)。采納引擎術(shù)語,把宿主發(fā)起的任務(wù)稱為宏觀任務(wù),把引擎發(fā)起的任務(wù)稱為微觀任務(wù)?;居梅ㄊ纠幕卣{(diào)是一個異步的執(zhí)行過程。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的...
摘要:版本以及之前,本身還沒有異步執(zhí)行代碼的能力,宿主環(huán)境傳遞給引擎,然后按順序執(zhí)行,由宿主發(fā)起任務(wù)。采納引擎術(shù)語,把宿主發(fā)起的任務(wù)稱為宏觀任務(wù),把引擎發(fā)起的任務(wù)稱為微觀任務(wù)?;居梅ㄊ纠幕卣{(diào)是一個異步的執(zhí)行過程。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的...
摘要:版本以及之前,本身還沒有異步執(zhí)行代碼的能力,宿主環(huán)境傳遞給引擎,然后按順序執(zhí)行,由宿主發(fā)起任務(wù)。采納引擎術(shù)語,把宿主發(fā)起的任務(wù)稱為宏觀任務(wù),把引擎發(fā)起的任務(wù)稱為微觀任務(wù)?;居梅ㄊ纠幕卣{(diào)是一個異步的執(zhí)行過程。 筆記說明 重學(xué)前端是程劭非(winter)【前手機淘寶前端負(fù)責(zé)人】在極客時間開的一個專欄,每天10分鐘,重構(gòu)你的前端知識體系,筆者主要整理學(xué)習(xí)過程的一些要點筆記以及感悟,完整的...
閱讀 1488·2021-09-10 11:27
閱讀 2444·2019-08-30 15:53
閱讀 1387·2019-08-30 13:10
閱讀 3011·2019-08-30 11:09
閱讀 1121·2019-08-29 17:23
閱讀 692·2019-08-29 17:05
閱讀 2972·2019-08-29 15:10
閱讀 2373·2019-08-29 13:22