亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

js利用遞歸與promise 按順序請求數據的方法

 更新時間:2019年08月30日 08:58:17   作者:wangnima666  
這篇文章主要介紹了js利用遞歸與promise 按順序請求數據,需要的朋友可以參考下

問題:項目中有一個需求,一個tabBar下面如果沒有內容就不讓該tabBar顯示,當然至于有沒有內容,需要我們通過請求的來判斷,但是由于請求是異步的,如何讓請求按照tabBar的順序進行?

方案:我們可以將promise變成下一個請求,可以利用遞歸來實現

實施:

//定義初始數據 requestlist就像tabBar列表

  let requestlist = [1, 2, 3, 4, 5, 6, 7,8,9];
  //每個tabBar的返回數據使用reslist裝起來
  let reslist = [];
  function startapi() {
    //定義counts,用來收集請求的次數,(也可以用reslist的length進行判斷)
    let counts = 0;
    return function apirequest() {
        let arg =arguments[0]
        let a = new Promise((res, rej) => {
          //setTimeout模擬請求到接收的時間需要5秒鐘
          setTimeout(function () {
            res('成功返回數據');
          },100)
        })
        //無論成功或者失敗都要進行下一次,以免阻塞,成功請求的末尾有s標志,失敗的末尾有f標志
        a.then(() => {
         counts++;
          if (counts > requestlist.length) {
            return;
          }
          console.log(counts)
          //1,假設當前請求出錯的時候我們認為這不合法,假設此時counts為3
          if(counts==3){
          throw new Error('第三個失敗')
          }
          //2,假設當前請求下沒有數據的時候我們認為不合法 ,假設此時counts為4
          if(counts==4){
           reslist.push(arg + 'f');
          }
          if(counts!=4){
          reslist.push(arg + 's');
          }
          apirequest(requestlist[counts])
          console.log(reslist)
        }).catch(err => {
        reslist.push(arg + 'f');
        //遞歸調用
        apirequest(requestlist[counts])
          console.log(err)
        })
    }
  }
  let newapiget = startapi();
  newapiget(requestlist[0])

 最終我們打印結果得到:

 

 可以看到第三個和第四個結尾為f

總結

以上所述是小編給大家介紹的js利用遞歸與promise 按順序請求數據的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

相關文章

  • js實現點擊切換和自動播放的輪播圖

    js實現點擊切換和自動播放的輪播圖

    這篇文章主要為大家詳細介紹了js實現點擊切換和自動播放的輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS輕松實現CSS設置,DIV+CSS常用CSS設置

    JS輕松實現CSS設置,DIV+CSS常用CSS設置

    JS輕松實現CSS設置,DIV+CSS常用CSS設置...
    2007-02-02
  • js驗證整數加保留小數點的簡單實例

    js驗證整數加保留小數點的簡單實例

    這篇文章主要介紹了js驗證整數加保留小數點的簡單實例,有需要的朋友可以參考一下
    2013-12-12
  • 信息頁文內畫中畫廣告js實現代碼(文中加載廣告方式)

    信息頁文內畫中畫廣告js實現代碼(文中加載廣告方式)

    一般來說文章內容中的廣告點擊率更好,也更容易被訪客看到,如果直接將廣告放到頁面頭部會影響網站的速度,所以一般都比較喜歡這種方法,這里分享下實現方法
    2016-01-01
  • Java SE 9 多版本兼容 JAR 包示例

    Java SE 9 多版本兼容 JAR 包示例

    這篇文章主要介紹了Java SE 9 多版本兼容 JAR 包示例,Java 9 版本中增強了Jar 包多版本字節(jié)碼文件格式支持,也就是說在同一個 Jar 包中我們可以包含多個 Java 版本的 class 文件,更多相關內容感興趣的小伙伴可以參考一下
    2022-08-08
  • 微信小程序如何獲取手機驗證碼

    微信小程序如何獲取手機驗證碼

    這篇文章主要為大家詳細介紹了微信小程序如何獲取手機驗證碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • JavaScript中instanceof運算符的用法總結

    JavaScript中instanceof運算符的用法總結

    這篇文章主要是對JavaScript中instanceof運算符的用法進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • JavaScript快速排序算法不同版本原理解析

    JavaScript快速排序算法不同版本原理解析

    這篇文章主要為大家介紹了JavaScript快速排序算法不同版本原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • javascript實現移動的模態(tài)框效果

    javascript實現移動的模態(tài)框效果

    這篇文章主要為大家詳細介紹了javascript實現移動的模態(tài)框效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • js 文件引入實現代碼

    js 文件引入實現代碼

    項目前端的文件和后臺開發(fā)分離,只要后臺開發(fā)更新svn前端的js,css文件都會更新,以前引用的是一個js文件如AA.js,由于想在項目中引用jquery庫,如果在每個文件的頭部都引讓他們從新寫入這個jq文件不太可能
    2010-04-04

最新評論