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

資訊專欄INFORMATION COLUMN

一次性掌握ES6/ES7異步處理

tracymac7 / 1357人閱讀

摘要:一次性掌握異步處理假定一個(gè)場景,等女朋友睡起來出去逛街,超過就不等了,自己打游戲了處理方式寫法鏈?zhǔn)秸{(diào)用方法,只有當(dāng)異步處理成功后回到用拿到異步處理成功后的數(shù)據(jù)異步處理出錯(cuò)時(shí),會(huì)調(diào)用獲取到異常也就是說方法里有兩個(gè)回調(diào)函數(shù)作為參數(shù)或者還有第二種

一次性掌握ES6/ES7異步處理
假定一個(gè)場景,等女朋友睡起來出去逛街,超過5s就不等了,自己打游戲了 ...
ES6 Promise 處理方式

promise 寫法
promise鏈?zhǔn)秸{(diào)用方法,只有當(dāng)異步處理成功后回到用.then(data => {}) 拿到異步處理成功后的數(shù)據(jù)
異步處理出錯(cuò)時(shí),會(huì)調(diào)用.then(err => {}) 獲取到異常
也就是說.then( data => {}, err => {}) 方法里有兩個(gè)回調(diào)函數(shù)作為參數(shù)
或者還有第二種寫法.then(data => {}).catch(err => {})

function waiting (ms) {
    return new Promise ( (resolve, reject) => {
        if(ms > 5000) {
            reject("long time")
        } else {
            setTimeout(() => {
                resolve(ms);
            }, ms)
        }
    })
}


function main () {
    waiting(3000).then( success => {
        console.log(success);
    }, err => {
        console.log(err)
    })
}

// 或者
function main() {
    waiting(3000).then(data => {
        console.log(data)
    }).catch(err => {
        console.log(err);
    })
}

ES7 Async/Await 處理方式

async 表明這個(gè)函數(shù)里面有異步操作,await總是寫在async聲明的函數(shù)中的
遇到awit,函數(shù)就會(huì)停止執(zhí)行,等待異步操作結(jié)束,再執(zhí)行后面的語句
異步操作獲取的結(jié)果即為resolve回調(diào)函數(shù)的參數(shù)返回
異常即通過reject回調(diào)函數(shù)參數(shù)獲取
注意,捕獲異常時(shí),我們往往需要在async函數(shù)體中使用 try catch 方式獲取異常

let sleep = ms => {
    return new Promise ( (resolve, reject) => {
        if(ms > 5000) {
            reject("long time")
        } else {
            setTimeout(function() {
                resolve(ms)
            } ,ms)
        }
    })
}

let play = (ms) => {
    console.log(`I wait you ${ms} s`)
}

let main = async () => {
    try{
        let result = await sleep(3000);
        play(result)
    } catch (err) {
        throw err
    }
}
注意:await等的是什么?是promise是承諾 返回的是resolve回調(diào)函數(shù)里面的數(shù)據(jù)

更多用法可以參考:Promise && Async/Await

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

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

相關(guān)文章

  • ES6

    摘要:對象可被不定參數(shù)和默認(rèn)參數(shù)完美代替。將對象納入規(guī)范,提供了原生的對象。規(guī)定,命令和命令聲明的全局變量,屬于全局對象的屬性命令命令命令聲明的全局變量,不屬于全局對象的屬性。。這些函數(shù)表達(dá)式最適合用于非方法函數(shù),并且它們不能用作構(gòu)造函數(shù)。 ES6的了解 新增模板字符串(為JavaScript提供了簡單的字符串插值功能)、箭頭函數(shù)(操作符左邊為輸入的參數(shù),而右邊則是進(jìn)行的操作以及返回的值In...

    snifes 評(píng)論0 收藏0
  • 從0到1使用VUE-CLI3開發(fā)實(shí)戰(zhàn)(三): ES6/ES7知識(shí)儲(chǔ)備

    摘要:它們都用于聲明變量。盲目使用替換后可能會(huì)導(dǎo)致預(yù)期意外的結(jié)果。有鑒于此,還是建議使用字符串,布爾和數(shù)字類型的數(shù)據(jù)類型。像使用這種下劃線命名約定在一個(gè)開源項(xiàng)目中,命名規(guī)則很難維持得一直很好,這樣經(jīng)常會(huì)造成一些困擾。 今天群里有小伙伴跟我聊天,問了我?guī)讉€(gè)關(guān)于ES6的問題,我才意識(shí)到,大部分初學(xué)者在學(xué)習(xí)的過程中,都是學(xué)了HTML/CSS/JS之后就開始上手學(xué)習(xí)框架了,而對于ES6的重視程度卻不...

    crossoverJie 評(píng)論0 收藏0
  • 揭秘babel的魔法之class繼承的處理2

    摘要:并且用驗(yàn)證了中一系列的實(shí)質(zhì)就是魔法糖的本質(zhì)。抽絲剝繭我們首先看的編譯結(jié)果這是一個(gè)自執(zhí)行函數(shù),它接受一個(gè)參數(shù)就是他要繼承的父類,返回一個(gè)構(gòu)造函數(shù)。 如果你已經(jīng)看過第一篇揭秘babel的魔法之class魔法處理,這篇將會(huì)是一個(gè)延伸;如果你還沒看過,并且也不想現(xiàn)在就去讀一下,單獨(dú)看這篇也沒有關(guān)系,并不存在理解上的障礙。 上一篇針對Babel對ES6里面基礎(chǔ)class的編譯進(jìn)行了分析。這一篇將...

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

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

0條評(píng)論

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