成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

promise async await 理解筆記

NoraXie / 3048人閱讀

摘要:在異步編程中,提供了對象的方式。例如等同于所以可以理解為生成一個實例。那么自然也可以去調(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

相關(guān)文章

  • JavaScript闖關(guān)筆記

    摘要:對空數(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 迭代方法 ...

    Jokcy 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(十七)--Promise里的代碼為什么比setTimeout先執(zhí)行?

    摘要:版本以及之前,本身還沒有異步執(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í)過程的一些要點筆記以及感悟,完整的...

    pinecone 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(十七)--Promise里的代碼為什么比setTimeout先執(zhí)行?

    摘要:版本以及之前,本身還沒有異步執(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í)過程的一些要點筆記以及感悟,完整的...

    zorpan 評論0 收藏0
  • 重學(xué)前端學(xué)習(xí)筆記(十七)--Promise里的代碼為什么比setTimeout先執(zhí)行?

    摘要:版本以及之前,本身還沒有異步執(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í)過程的一些要點筆記以及感悟,完整的...

    xiongzenghui 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<