在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    JavaScript 回調(diào)函數(shù)/Promise/ async/await

    并發(fā)和并行

    并行和并發(fā)是兩個(gè)概念,容易混淆是因?yàn)椴⑿泻筒l(fā)在中文意思上相近,其實(shí)在英文中,這是完全不相同的東西,并行(parallelism)、并發(fā)(concurrency)。

    并行(parallelism):是微觀概念,假設(shè)CPU有兩個(gè)核心,則我們就可以同時(shí)完成任務(wù)A和任務(wù)B,同時(shí)完成多個(gè)任務(wù)的情況就可以稱之為并行。

    并發(fā)(concurrency):是宏觀概念,現(xiàn)在有任務(wù)A和任務(wù)B,在一段時(shí)間內(nèi),通過(guò)任務(wù)之間的切換完成這兩個(gè)任務(wù),這種情況稱之為并發(fā)。

    回調(diào)函數(shù)

    回調(diào)函數(shù)廣泛存在于我們所編寫(xiě)的JavaScript代碼中,它表現(xiàn)在事件綁定,Ajax請(qǐng)求或者其他的情況下,一個(gè)回調(diào)函數(shù)可表現(xiàn)成如下形式

    ajax(url, () => { console.log(‘這里是回調(diào)函數(shù)’);})

    回調(diào)地獄: 回調(diào)函數(shù)很好的解決了某些異步情況,但過(guò)度濫用回調(diào)函數(shù)會(huì)造成回調(diào)地獄,即回調(diào)函數(shù)過(guò)長(zhǎng),嵌套過(guò)深。過(guò)長(zhǎng)或者嵌套過(guò)深的回調(diào)函數(shù),會(huì)讓回調(diào)函數(shù)存在強(qiáng)耦合關(guān)系,一旦有一個(gè)函數(shù)有所改動(dòng),那么可能會(huì)牽一發(fā)而動(dòng)全身。一個(gè)回調(diào)地獄可能如下所示:

    ajax(firstUrl, () => { console.log(‘這里是首次回調(diào)函數(shù)’); ajax(secondUrl, () => { console.log(‘這里是第二次回調(diào)函數(shù)’); ajax(threeUrl, () => { console.log(‘這里是第三次回調(diào)函數(shù)’); // todo更多 }) })})

    Generator

    在ES6之前,一個(gè)函數(shù)一旦執(zhí)行將不會(huì)被中斷,一直到函數(shù)執(zhí)行完畢,在ES6之后,由于Generator的存在,函數(shù)可以暫停自身,待到合適的機(jī)會(huì)再次執(zhí)行。用Generator可以解決回調(diào)地獄。

    function *fetch() { yield ajax(url, () => {console.log(‘這里是首次回調(diào)函數(shù)’);}); yield ajax(url, () => {console.log(‘這里是第二次回調(diào)函數(shù)’);}); yield ajax(url, () => {console.log(‘這里是第三次回調(diào)函數(shù)’);});}var it = fetch();var result1 = it.next();var result2 = it.next();var result3 = it.next();

    Promise

    Promise翻譯過(guò)來(lái)就是承諾的意思,Promise一共有三種狀態(tài):pending(等待中)、resolve(完成)和reject(拒絕),這個(gè)承諾意味著在將來(lái)一定會(huì)有一個(gè)表決,并且只能表決一次,表決的狀態(tài)一定是resolve(完成)或者reject(拒絕),一個(gè)Promise可能會(huì)是如下的形式:

    // 普通的Promisefunction foo() { return new Promise((resolve,reject) => { // 第一次表決有效,其后無(wú)論是resolve()還是reject()都無(wú)效 resolve(true); resolve(false); })}// Promise解決回調(diào)地獄ajax(url).then(res => { console.log(‘這里是首次回調(diào)函數(shù)’);}).then(res => { console.log(‘這里是第二次回調(diào)函數(shù)’);}).then(res => { console.log(‘這里是第三次回調(diào)函數(shù)’);})

    async/await

    如果一個(gè)方法前面加上了async,那么這個(gè)方法就會(huì)返回一個(gè)Promise,async就是將函數(shù)用Promise.resolve()包裹了下,并且await只能配合async使用,不能單獨(dú)出現(xiàn)。一個(gè)async/await可能會(huì)是如下的形式:

    // 普通的async/awaitasync function foo() { let number = await 3; // await自動(dòng)用promise.resolve()包裝 console.log(number);}foo();// async/await解決回調(diào)地獄async function fetch() { var result1 = await ajax(url1); var result2 = await ajax(url2); var result3 = await ajax(url3);}fetch();

    如若轉(zhuǎn)載,請(qǐng)注明出處:開(kāi)源字節(jié) https://sourcebyte.cn/article/170.html

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月29日 11:33
    下一篇 2022年6月29日 11:33

    相關(guān)推薦

    • 分享4條發(fā)微商朋友圈的方法(微商朋友圈應(yīng)該怎么發(fā))

      對(duì)于微商朋友來(lái)說(shuō),朋友圈的重要性不言而喻了。 那么微商的朋友圈到底該怎么發(fā)呢? 為什么同樣是經(jīng)營(yíng)一個(gè)朋友圈,有的微商看起來(lái)逼格滿滿,實(shí)際效果也不錯(cuò);而有的卻動(dòng)都不動(dòng)就被屏蔽甚至拉黑…

      2022年11月27日
    • TES官宣knight斷開(kāi)連接!網(wǎng)友:左手就是下一個(gè)369

      2022LPL冬季轉(zhuǎn)會(huì)期已經(jīng)正式到來(lái),如果說(shuō)此次轉(zhuǎn)會(huì)期熱度最高的一支隊(duì)伍,無(wú)疑就是在2022全球總決賽中拿到四強(qiáng)成績(jī)的JDG了。因?yàn)閾?jù)目前網(wǎng)上爆料人的消息來(lái)看,JDG很有可能會(huì)通過(guò)…

      2022年11月27日
    • 存儲(chǔ)過(guò)程語(yǔ)法(sql server存儲(chǔ)過(guò)程語(yǔ)法)

      今天小編給各位分享存儲(chǔ)過(guò)程語(yǔ)法的知識(shí),其中也會(huì)對(duì)sql server存儲(chǔ)過(guò)程語(yǔ)法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問(wèn)題,別忘了關(guān)注本站,現(xiàn)在開(kāi)始吧! oracle存儲(chǔ)過(guò)程基本語(yǔ)法…

      2022年11月26日
    • 《寶可夢(mèng)朱紫》夢(mèng)特性怎么獲得?隱藏特性獲取方法推薦

      寶可夢(mèng)朱紫里有很多寶可夢(mèng)都是擁有夢(mèng)特性會(huì)變強(qiáng)的寶可夢(mèng),很多玩家不知道夢(mèng)特性怎么獲得,下面就給大家?guī)?lái)寶可夢(mèng)朱紫隱藏特性獲取方法推薦,感興趣的小伙伴一起來(lái)看看吧,希望能幫助到大家。 …

      2022年11月25日
    • 《寶可夢(mèng)朱紫》奇魯莉安怎么進(jìn)化?奇魯莉安進(jìn)化方法分享

      寶可夢(mèng)朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)?lái)寶可夢(mèng)朱紫奇魯莉安進(jìn)化方法分享,感興趣的小伙伴一起來(lái)看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

      2022年11月25日
    • 北京疫情為什么突然爆發(fā)(北京疫情為什么突然增多)

      這幾天北京疫情的新增情況也突然開(kāi)始變得嚴(yán)重起來(lái)了,大家對(duì)本輪北京疫情爆發(fā)的原因也十分好奇。北京疫情為什么突然爆發(fā)?尤其是本周北京疫情的新增開(kāi)始越來(lái)越多了,這讓民眾對(duì)于本輪疫情的發(fā)展…

      2022年11月25日
    • 為什么北京疫情越來(lái)越嚴(yán)重(疫情為什么越控制越嚴(yán)重)

      有在關(guān)注北京疫情的小伙伴應(yīng)該注意到了,這幾天北京疫情的新增數(shù)據(jù)情況也開(kāi)始越發(fā)的嚴(yán)重起來(lái),大家對(duì)北京此次疫情發(fā)展情況也都不斷分析。為什么北京疫情越來(lái)越嚴(yán)重?導(dǎo)致北京本輪疫情的原因是什…

      2022年11月25日
    • iPhoneSE4價(jià)格或在3000以內(nèi) 蘋(píng)果se4最新消息

      據(jù)相關(guān)爆料,明年即將在春季發(fā)布的iPhoneSE4系列,售價(jià)可能會(huì)在3000元以內(nèi),可能會(huì)使用iPhone SE4與紅米K系列直接競(jìng)爭(zhēng),打算正式進(jìn)入2000元價(jià)位市場(chǎng)??梢钥闯?,如…

      2022年11月24日
    • 成都健康碼崩了是怎么回事(成都健康碼系統(tǒng)崩了)

      健康碼是大家出行必備的工具,有小伙伴反映自己健康碼崩了,上不了地鐵,那么成都健康碼崩了是怎么回事?成都健康碼怎么突然崩了?成都健康碼崩了是怎么辦?下面小編為大家?guī)?lái)成都健康碼崩了原…

      2022年11月24日
    • 《寶可夢(mèng)朱紫》暴飛龍?jiān)趺醋??暴飛龍獲得方法

      寶可夢(mèng)朱紫暴飛龍位置在哪?在游戲中,很多玩家還不清楚暴飛龍具體要怎么樣獲得,其實(shí)獲得方法很簡(jiǎn)單,暴飛龍直接是沒(méi)得抓的,需要玩家從寶貝龍進(jìn)化得到,下面一起來(lái)看一下寶可夢(mèng)朱紫暴飛龍獲得…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息