日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達者為師

網(wǎng)站首頁 編程語言 正文

用promise.all搭配map方法解決異步問題

作者:LangForOne 更新時間: 2023-10-25 編程語言

今天在項目中遇到一個異步問題,出現(xiàn)原因如下:
在這里插入圖片描述
我在getEnergeHouseDanhao這個函數(shù)中加入了一個請求,該函數(shù)是獲取某機器單耗,但要請求四次分別去獲取年單耗、月單耗、日單耗、小時單耗
在這里插入圖片描述
然而執(zhí)行后因為請求是異步的,此時打印datas拿不到在請求中push進去的數(shù)組,在設(shè)置定時器才能拿到數(shù)組。
在這里插入圖片描述

然而我們無法確定接口的相應(yīng)時間,用定時器解決顯然是存在很大風(fēng)險的。


那么該如何解決類似的問題呢?可以使用promise.all解決異步。

首先簡單且通俗易懂地介紹一下promise.all是什么,具體要深入理解請查閱官方文檔

在這里插入圖片描述

而在需要用不同的入?yún)⑷ブ貜?fù)調(diào)用一個封裝的接口函數(shù)去請求數(shù)據(jù)時,我們可以先賦值一個存放入?yún)⒌臄?shù)組paramsList,通過map遍歷該數(shù)組去進行一次次的請求,并將這些請求都放在promise.all里執(zhí)行,具體實現(xiàn)方法如下:

例:paramsList存放入?yún)⒌臄?shù)組
在這里插入圖片描述
調(diào)用promise.all
在這里插入圖片描述
讓我們來看看打印出來的reslist是什么:
在這里插入圖片描述

4個請求都成功,拿到一個有4個元素的數(shù)組,并每個數(shù)組都拿到了接口返回的data,這時就基本大功告成了。

再編寫一下.then內(nèi)的邏輯
在這里插入圖片描述
在這里插入圖片描述

大功告成~拿到數(shù)據(jù)就可以去繪制圖表了。


關(guān)于我自己封裝的圖表組件還很不完善,等未來完善得差不多了再發(fā)一帖吧

代碼:

      Promise.all(paramsList.map((item) => {
        return http.post("#你的請求", {
          ...item
        });
      })
      ).then((reslist) => {
        // 請求成功邏輯
        console.log(reslist);
      }).catch(() => {
        // 失敗邏輯
      });

THX~

原文鏈接:https://blog.csdn.net/vvv3171071/article/details/122237677

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新