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

資訊專(zhuān)欄INFORMATION COLUMN

以同步格式寫(xiě)異步代碼 - await

ashe / 1466人閱讀

摘要:用優(yōu)雅的方式編寫(xiě)異步代碼前言隨著互聯(lián)網(wǎng)的發(fā)展,的應(yīng)用越來(lái)越廣泛,地位也越來(lái)越重要,網(wǎng)站也發(fā)生了翻天覆地的變化。也是中的關(guān)鍵字,字面意思是異步,作用就是聲明一個(gè)異步方法。注意不能多帶帶存在,必須和異步關(guān)鍵字一起使用。

用優(yōu)雅的方式編寫(xiě)異步代碼-Eric

前言

隨著互聯(lián)網(wǎng)的發(fā)展,js的應(yīng)用越來(lái)越廣泛,地位也越來(lái)越重要,網(wǎng)站也發(fā)生了翻天覆地的變化。
到目前為止,前后臺(tái)基本徹底分離,交互都采用異步的方式,ajax、fetch...

fetch

目前大部分互聯(lián)網(wǎng)公司開(kāi)發(fā)都轉(zhuǎn)向React、Vue,前后臺(tái)交互也大都使用fetch取代ajax,而我們知道fetch的實(shí)現(xiàn)原理采用了es6中的Promise,Promise把異步請(qǐng)求變得簡(jiǎn)單優(yōu)雅,代碼示例:

fetch(url, {})
    .then(response=>{})
    .then(res=>{})
    .catch(err=>{});

我們要處理返回結(jié)果一般這么寫(xiě):

fetch(url, {})
    .then(response=>{ return response.json() })
    .then(res=>{
        // 結(jié)果處理
        if(res.success){
            // somecode...
        }
    })
    .catch(err=>{});

如果處理邏輯比較多,這么寫(xiě)不直觀(guān),能不能這么寫(xiě)呢:

let res = fetch(url, {});
// 結(jié)果處理
if(res.success){
    // somecode...
}

結(jié)果當(dāng)然是可以的,那就是es7中的await

await & async

await 是es7中定義的一個(gè)關(guān)鍵字,可以等待Promise返回?cái)?shù)據(jù),相當(dāng)于暫停功能,await字面意思就是等待。
async也是es7中的關(guān)鍵字,字面意思是異步,作用就是聲明一個(gè)異步方法。

注意:
1、await不能多帶帶存在,必須和async(異步)關(guān)鍵字一起使用。
2、await 后面如果不是一個(gè)Promise對(duì)象的話(huà),那么不會(huì)等待哦!

代碼走一波:

// async寫(xiě)在方法前面
asyncFunc = async ()=>{

    console.time();

    let res = await (new Promise((resolve, reject)=>{
        setTimeout(resolve.bind(this, 10), 2000);
    }));

    console.timeEnd(); // default: 2711.656982421875ms  等待Promise執(zhí)行完畢

    console.log( res ); // 10  拿到了Promise的返回結(jié)果
}

asyncFunc();

await 對(duì)普通異步代碼無(wú)效:

asyncFunc2 = async ()=>{

    console.time();

    let res = await setTimeout( ()=>{return 10}, 2000);

    console.timeEnd(); // default: 0.705078125ms, 說(shuō)明沒(méi)有等待setTimeout完成

    console.log( res ); // 737 setTimeout定時(shí)器的返回值
}

asyncFunc2();

更多操作自己去實(shí)踐吧!

擴(kuò)展

有興趣的小伙伴可以去研究下 yield 關(guān)鍵字哦, 可以暫停方法的執(zhí)行,并返回yield 后面的值

喜歡我的文章就點(diǎn)贊轉(zhuǎn)發(fā)吧!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108622.html

相關(guān)文章

  • async/await 異步應(yīng)用的常用場(chǎng)景

    摘要:下面將簡(jiǎn)單地描述一下一些日常常用場(chǎng)景加深對(duì)認(rèn)識(shí)最普遍的異步操作就是請(qǐng)求我們也可以用來(lái)簡(jiǎn)單模擬異步請(qǐng)求。其中是必須的如果省略了程序就不能按預(yù)期得到結(jié)果。 前言 async/await 語(yǔ)法用看起來(lái)像寫(xiě)同步代碼的方式來(lái)優(yōu)雅地處理異步操作,但是我們也要明白一點(diǎn),異步操作本來(lái)帶有復(fù)雜性,像寫(xiě)同步代碼的方式并不能降低本質(zhì)上的復(fù)雜性,所以在處理上我們要更加謹(jǐn)慎, 稍有不慎就可能寫(xiě)出不是預(yù)期執(zhí)行的代...

    ermaoL 評(píng)論0 收藏0
  • async/await 異步應(yīng)用的常用場(chǎng)景

    摘要:下面將簡(jiǎn)單地描述一下一些日常常用場(chǎng)景加深對(duì)認(rèn)識(shí)最普遍的異步操作就是請(qǐng)求我們也可以用來(lái)簡(jiǎn)單模擬異步請(qǐng)求。其中是必須的如果省略了程序就不能按預(yù)期得到結(jié)果。 前言 async/await 語(yǔ)法用看起來(lái)像寫(xiě)同步代碼的方式來(lái)優(yōu)雅地處理異步操作,但是我們也要明白一點(diǎn),異步操作本來(lái)帶有復(fù)雜性,像寫(xiě)同步代碼的方式并不能降低本質(zhì)上的復(fù)雜性,所以在處理上我們要更加謹(jǐn)慎, 稍有不慎就可能寫(xiě)出不是預(yù)期執(zhí)行的代...

    darkbug 評(píng)論0 收藏0
  • async/await 異步應(yīng)用的常用場(chǎng)景

    摘要:下面將簡(jiǎn)單地描述一下一些日常常用場(chǎng)景加深對(duì)認(rèn)識(shí)最普遍的異步操作就是請(qǐng)求我們也可以用來(lái)簡(jiǎn)單模擬異步請(qǐng)求。其中是必須的如果省略了程序就不能按預(yù)期得到結(jié)果。 前言 async/await 語(yǔ)法用看起來(lái)像寫(xiě)同步代碼的方式來(lái)優(yōu)雅地處理異步操作,但是我們也要明白一點(diǎn),異步操作本來(lái)帶有復(fù)雜性,像寫(xiě)同步代碼的方式并不能降低本質(zhì)上的復(fù)雜性,所以在處理上我們要更加謹(jǐn)慎, 稍有不慎就可能寫(xiě)出不是預(yù)期執(zhí)行的代...

    寵來(lái)也 評(píng)論0 收藏1
  • 細(xì)說(shuō)JS異步發(fā)展歷程

    摘要:換句話(huà)說(shuō),當(dāng)一個(gè)異步過(guò)程調(diào)用發(fā)出后,調(diào)用者不會(huì)立刻得到結(jié)果。參考文章珠峰架構(gòu)課墻裂推薦細(xì)說(shuō)異步函數(shù)發(fā)展歷程異步編程謝謝各位小伙伴愿意花費(fèi)寶貴的時(shí)間閱讀本文,如果本文給了您一點(diǎn)幫助或者是啟發(fā),請(qǐng)不要吝嗇你的贊和,您的肯定是我前進(jìn)的最大動(dòng)力。知其然知其所以然,首先了解三個(gè)概念: 1.什么是同步? 所謂同步,就是在發(fā)出一個(gè)調(diào)用時(shí),在沒(méi)有得到結(jié)果之前,該調(diào)用就不返回。但是一旦調(diào)用返回,就得到返回值了...

    Alfred 評(píng)論0 收藏0
  • 細(xì)說(shuō)JS異步發(fā)展歷程

    摘要:參考文章珠峰架構(gòu)課墻裂推薦細(xì)說(shuō)異步函數(shù)發(fā)展歷程異步編程謝謝各位小伙伴愿意花費(fèi)寶貴的時(shí)間閱讀本文,如果本文給了您一點(diǎn)幫助或者是啟發(fā),請(qǐng)不要吝嗇你的贊和,您的肯定是我前進(jìn)的最大動(dòng)力。 知其然知其所以然,首先了解三個(gè)概念: 1.什么是同步? 所謂同步,就是在發(fā)出一個(gè)調(diào)用時(shí),在沒(méi)有得到結(jié)果之前,該調(diào)用就不返回。但是一旦調(diào)用返回,就得到返回值了。換句話(huà)說(shuō),就是由調(diào)用者主動(dòng)等待這個(gè)調(diào)用的結(jié)果。此調(diào)...

    RiverLi 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<