国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 10:56:21
字體:
來源:轉載
供稿:網友

問題:項目中有一個需求,一個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 按順序請求數據的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 图木舒克市| 阜阳市| 靖宇县| 广汉市| 黄冈市| 观塘区| 锡林浩特市| 红河县| 宜宾县| 普格县| 陇川县| 保山市| 石嘴山市| 长宁区| 全南县| 宜城市| 信丰县| 海门市| 武乡县| 无极县| 章丘市| 精河县| 定南县| 灵武市| 神池县| 志丹县| 秀山| 元氏县| 昌黎县| 都安| 镇坪县| 丰宁| 介休市| 富川| 博乐市| 长宁县| 葵青区| 射阳县| 德庆县| 大名县| 九江市|