免费爱碰视频在线观看,九九精品国产屋,欧美亚洲尤物久久精品,1024在线观看视频亚洲

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

      并發(fā)和并行

      并行和并發(fā)是兩個概念,容易混淆是因為并行和并發(fā)在中文意思上相近,其實在英文中,這是完全不相同的東西,并行(parallelism)、并發(fā)(concurrency)。

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

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

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

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

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

      回調(diào)地獄: 回調(diào)函數(shù)很好的解決了某些異步情況,但過度濫用回調(diào)函數(shù)會造成回調(diào)地獄,即回調(diào)函數(shù)過長,嵌套過深。過長或者嵌套過深的回調(diào)函數(shù),會讓回調(diào)函數(shù)存在強耦合關(guān)系,一旦有一個函數(shù)有所改動,那么可能會牽一發(fā)而動全身。一個回調(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之前,一個函數(shù)一旦執(zhí)行將不會被中斷,一直到函數(shù)執(zhí)行完畢,在ES6之后,由于Generator的存在,函數(shù)可以暫停自身,待到合適的機會再次執(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翻譯過來就是承諾的意思,Promise一共有三種狀態(tài):pending(等待中)、resolve(完成)和reject(拒絕),這個承諾意味著在將來一定會有一個表決,并且只能表決一次,表決的狀態(tài)一定是resolve(完成)或者reject(拒絕),一個Promise可能會是如下的形式:

      // 普通的Promisefunction foo() { return new Promise((resolve,reject) => { // 第一次表決有效,其后無論是resolve()還是reject()都無效 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

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

      // 普通的async/awaitasync function foo() { let number = await 3; // await自動用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)載,請注明出處:開源字節(jié) https://sourcebyte.cn/article/170.html

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

      相關(guān)推薦

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

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

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

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

        2022年11月27日
      • 存儲過程語法(sql server存儲過程語法)

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

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

        寶可夢朱紫里有很多寶可夢都是擁有夢特性會變強的寶可夢,很多玩家不知道夢特性怎么獲得,下面就給大家?guī)韺毧蓧糁熳想[藏特性獲取方法推薦,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 …

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

        寶可夢朱紫中的奇魯莉安要怎么進(jìn)化呢?很多玩家都不知道,下面就給大家?guī)韺毧蓧糁熳掀骠斃虬策M(jìn)化方法分享,感興趣的小伙伴一起來看看吧,希望能幫助到大家。 奇魯莉安進(jìn)化方法分享 奇魯莉安…

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

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

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

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

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

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

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

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

        2022年11月24日
      • 《寶可夢朱紫》暴飛龍怎么抓?暴飛龍獲得方法

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

        2022年11月23日

      聯(lián)系我們

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