亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

如何優(yōu)雅的實(shí)現(xiàn)多個(gè)接口并發(fā)?且監(jiān)聽(tīng)最終結(jié)果

shiweifu / 2487人閱讀

摘要:相信大家工作中調(diào)用接口的情況很常見(jiàn),有時(shí)候會(huì)有這樣的需求進(jìn)入頁(yè)面需要多個(gè)接口調(diào)用結(jié)束后,才能讓用戶(hù)進(jìn)行操作而這幾個(gè)接口本身并沒(méi)有先后順序的要求。最終判斷所有變量值都為。

相信大家工作中調(diào)用接口的情況很常見(jiàn),有時(shí)候會(huì)有這樣的需求:進(jìn)入頁(yè)面需要多個(gè)接口調(diào)用結(jié)束后,才能讓用戶(hù)進(jìn)行操作!而這幾個(gè)接口本身并沒(méi)有先后順序的要求。你會(huì)怎么做?

1、儲(chǔ)存變量方法

因?yàn)榻涌谡{(diào)用是異步行為,所以我們可以在調(diào)用成功的回調(diào)函數(shù)中標(biāo)記不同的變量(默認(rèn)值都設(shè)置為false),等到當(dāng)前接口完的時(shí)候,會(huì)把當(dāng)前變量設(shè)置為true。最終判斷所有變量值都為true。很明顯這樣會(huì)需要很多全局變量,而且很復(fù)雜。所以不推薦使用。

ES6 promise方法

我們都知道使用fetch調(diào)用接口會(huì)返回一個(gè)Promise實(shí)例,因此我們模擬一個(gè)Promise異步返回:

const wait = ms => new Promise((resolve, reject) => {
  setTimeout(() => {
      console.log(`wait ${ms}ms`)
      resolve(`wait ${ms}ms`)
  }, ms)
})

const PA = Promise.all([wait(3000), wait(1000), wait(2000)])
// 依次打?。簑ait 1000ms wait 2000ms wait 3000ms
//PA => Promise {}
PA.then(res => console.log(res))

通過(guò)上面Promise.all執(zhí)行結(jié)果可以看出來(lái),返回了一個(gè)新的Promise實(shí)例,可以通過(guò).then回調(diào)處理,但是看起也是不太優(yōu)雅!

配合ES7 async/await方法

ES7為處理異步方法提供Generator的語(yǔ)法糖寫(xiě)法async/await方法。

但是,如果僅僅使用await的方法,接口會(huì)被阻塞,即執(zhí)行順序變成了同步的效果了;所以,通過(guò)await + Promise的方法寫(xiě)起來(lái)十分優(yōu)雅、簡(jiǎn)潔。

const wait = ms => new Promise((resolve, reject) => {
  setTimeout(() => {
      console.log(`wait ${ms}ms`)
      resolve(`wait ${ms}ms`)
  }, ms)
})
;(async () => {
  const PA = await Promise.all([wait(3000), wait(1000), wait(2000)])
  // 依次打印:wait 1000ms wait 2000ms wait 3000ms
  console.log(PA)
})()

//wait 1000ms 
//wait 2000ms 
//wait 3000ms 
//["wait 3000ms", "wait 1000ms", "wait 2000ms"]

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

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

相關(guān)文章

  • 函數(shù)式編程與面向?qū)ο缶幊蘙5]:編程本質(zhì)

    摘要:函數(shù)式編程與面向?qū)ο缶幊叹幊痰谋举|(zhì)之劍目錄編程的本質(zhì)讀到兩篇文章寫(xiě)的不錯(cuò)綜合摘錄一下復(fù)合是編程的本質(zhì)函數(shù)式程序員在洞察問(wèn)題方面會(huì)遵循一個(gè)奇特的路線。在面向?qū)ο缶幊讨?,?lèi)或接口的聲明就是表面。 函數(shù)式編程與面向?qū)ο缶幊蘙5]:編程的本質(zhì) 之劍 2016.5.6 01:26:31 編程的本質(zhì) 讀到兩篇文章,寫(xiě)的不錯(cuò), 綜合摘錄一下 復(fù)合是編程的本質(zhì) 函數(shù)式程序員在洞察問(wèn)題方面會(huì)遵循...

    miracledan 評(píng)論0 收藏0
  • 0011 - YARN核心設(shè)計(jì)解析

    摘要:包括等,它們共同維護(hù)了一個(gè)事件與事件處理器的映射表,用來(lái)處理各個(gè)事件。例如內(nèi)部包含一個(gè)中央異步調(diào)度器,并注冊(cè)了等一系列事件事件處理器,由中央異步調(diào)度器統(tǒng)一管理和調(diào)度。當(dāng)狀態(tài)機(jī)轉(zhuǎn)換到最終狀態(tài)時(shí),則退出。 大數(shù)據(jù)夢(mèng)工廠( 0011 - YARN核心設(shè)計(jì)解析)1 - YARN RPC架構(gòu)設(shè)計(jì)YARN RPC Serv...

    KoreyLee 評(píng)論0 收藏0
  • 《Node.js設(shè)計(jì)模式》使用流進(jìn)行編碼

    摘要:如何創(chuàng)建并使用。正如我們所預(yù)料到的那樣,使用來(lái)進(jìn)行大文件的讀取顯然是錯(cuò)誤的。使用進(jìn)行壓縮文件我們必須修復(fù)我們的應(yīng)用程序,并使其處理大文件的最簡(jiǎn)單方法是使用的。確切地說(shuō),由返回的流。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書(shū)筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關(guān)注我的專(zhuān)欄,之后的博文將在專(zhuān)欄同步: En...

    xinhaip 評(píng)論0 收藏0
  • 入門(mén)架構(gòu)——單機(jī)高性能

    摘要:協(xié)作方式在高并發(fā)場(chǎng)景中,必須要讓服務(wù)器同時(shí)維護(hù)大量請(qǐng)求連接,可能是一個(gè)服務(wù)進(jìn)程創(chuàng)建另一個(gè)進(jìn)程,也可能是一個(gè)服務(wù)線程去創(chuàng)建另一個(gè)線程,但連接結(jié)束后進(jìn)程或線程就銷(xiāo)毀了,這是一個(gè)巨大的浪費(fèi)一個(gè)自然的想法就是通過(guò)創(chuàng)建一個(gè)進(jìn)程線程池從而達(dá)到資源復(fù)用, showImg(https://segmentfault.com/img/bVbtgn1?w=313&h=208); 協(xié)作方式 在高并發(fā)場(chǎng)景中,必...

    UCloud 評(píng)論0 收藏0
  • 現(xiàn)代軟件開(kāi)發(fā)流程-by 12-Factor

    摘要:將開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境的差異降至最低,并使用持續(xù)交付實(shí)施敏捷開(kāi)發(fā)。可以在工具架構(gòu)和開(kāi)發(fā)流程不發(fā)生明顯變化的前提下實(shí)現(xiàn)擴(kuò)展。我們的初衷是分享在現(xiàn)代軟件開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)的一些系統(tǒng)性問(wèn)題,并加深對(duì)這些問(wèn)題的認(rèn)識(shí)。 簡(jiǎn)介 如今,軟件通常會(huì)作為一種服務(wù)來(lái)交付,它們被稱(chēng)為網(wǎng)絡(luò)應(yīng)用程序,或軟件即服務(wù)(SaaS)。12-Factor 為構(gòu)建如下的 SaaS 應(yīng)用提供了方法論: 使用標(biāo)準(zhǔn)化流程自動(dòng)配置,從...

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

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

0條評(píng)論

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