国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何優雅的實現多個接口并發?且監聽最終結果

shiweifu / 2423人閱讀

摘要:相信大家工作中調用接口的情況很常見,有時候會有這樣的需求進入頁面需要多個接口調用結束后,才能讓用戶進行操作而這幾個接口本身并沒有先后順序的要求。最終判斷所有變量值都為。

相信大家工作中調用接口的情況很常見,有時候會有這樣的需求:進入頁面需要多個接口調用結束后,才能讓用戶進行操作!而這幾個接口本身并沒有先后順序的要求。你會怎么做?

1、儲存變量方法

因為接口調用是異步行為,所以我們可以在調用成功的回調函數中標記不同的變量(默認值都設置為false),等到當前接口完的時候,會把當前變量設置為true。最終判斷所有變量值都為true。很明顯這樣會需要很多全局變量,而且很復雜。所以不推薦使用。

ES6 promise方法

我們都知道使用fetch調用接口會返回一個Promise實例,因此我們模擬一個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)])
// 依次打印:wait 1000ms wait 2000ms wait 3000ms
//PA => Promise {}
PA.then(res => console.log(res))

通過上面Promise.all執行結果可以看出來,返回了一個新的Promise實例,可以通過.then回調處理,但是看起也是不太優雅!

配合ES7 async/await方法

ES7為處理異步方法提供Generator的語法糖寫法async/await方法。

但是,如果僅僅使用await的方法,接口會被阻塞,即執行順序變成了同步的效果了;所以,通過await + Promise的方法寫起來十分優雅、簡潔。

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"]

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/105631.html

相關文章

  • 函數式編程與面向對象編程[5]:編程本質

    摘要:函數式編程與面向對象編程編程的本質之劍目錄編程的本質讀到兩篇文章寫的不錯綜合摘錄一下復合是編程的本質函數式程序員在洞察問題方面會遵循一個奇特的路線。在面向對象編程中,類或接口的聲明就是表面。 函數式編程與面向對象編程[5]:編程的本質 之劍 2016.5.6 01:26:31 編程的本質 讀到兩篇文章,寫的不錯, 綜合摘錄一下 復合是編程的本質 函數式程序員在洞察問題方面會遵循...

    miracledan 評論0 收藏0
  • 0011 - YARN核心設計解析

    摘要:包括等,它們共同維護了一個事件與事件處理器的映射表,用來處理各個事件。例如內部包含一個中央異步調度器,并注冊了等一系列事件事件處理器,由中央異步調度器統一管理和調度。當狀態機轉換到最終狀態時,則退出。 大數據夢工廠( 0011 - YARN核心設計解析)1 - YARN RPC架構設計YARN RPC Serv...

    KoreyLee 評論0 收藏0
  • 《Node.js設計模式》使用流進行編碼

    摘要:如何創建并使用。正如我們所預料到的那樣,使用來進行大文件的讀取顯然是錯誤的。使用進行壓縮文件我們必須修復我們的應用程序,并使其處理大文件的最簡單方法是使用的。確切地說,由返回的流。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關注我的專欄,之后的博文將在專欄同步: En...

    xinhaip 評論0 收藏0
  • 入門架構——單機高性能

    摘要:協作方式在高并發場景中,必須要讓服務器同時維護大量請求連接,可能是一個服務進程創建另一個進程,也可能是一個服務線程去創建另一個線程,但連接結束后進程或線程就銷毀了,這是一個巨大的浪費一個自然的想法就是通過創建一個進程線程池從而達到資源復用, showImg(https://segmentfault.com/img/bVbtgn1?w=313&h=208); 協作方式 在高并發場景中,必...

    UCloud 評論0 收藏0
  • 現代軟件開發流程-by 12-Factor

    摘要:將開發環境和生產環境的差異降至最低,并使用持續交付實施敏捷開發。可以在工具架構和開發流程不發生明顯變化的前提下實現擴展。我們的初衷是分享在現代軟件開發過程中發現的一些系統性問題,并加深對這些問題的認識。 簡介 如今,軟件通常會作為一種服務來交付,它們被稱為網絡應用程序,或軟件即服務(SaaS)。12-Factor 為構建如下的 SaaS 應用提供了方法論: 使用標準化流程自動配置,從...

    draveness 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<