限制最大個(gè)數(shù)的并發(fā)請求

const urls = [];
for (let i = 1; i <= 10; i++) {
  urls.push(`https://jsonplaceholder.typicode.com/todos/${i}`)
}
limitRequest(urls, 3).then(res => {
  console.log(res, 999)
})

需要執(zhí)行 then,所以一定是 return 一個(gè)promise。

function limitRequest(urls, limit) {
  return new Promise(resolve => {

    function request() {
      const url = urls.shift()

      if(!url) return

      fetch(url).then(res => {
        console.log(res);
        request()
      })
    }

    // 同時(shí)請求三個(gè)
    request()
    request()
    request()
  })
}
image.png

resolve 或 finally 之后都可以直接 .then

function limitRequest(urls, limit) {
  return new Promise(resolve => {
    let index = 0

    function request() {
      const url = urls.shift()

      if(!url) return

      fetch(url).then(res => {
        console.log(res);
        request()

        if(index === 9) { // urls.length
          return resolve('all done!')
        }
        index++
      })
    }

    // 同時(shí)請求三個(gè)
    request()
    request()
    request()
  })
}
    request()
    request()
    request()

可以簡化為:

while(limit > 0) {
  limit -= 1
  request()
}

最終:

function limitRequest(urls, limit = 3) {
  return new Promise(resolve => {
    let index = 0

    function request() {
      const url = urls.shift()

      if(!url) return

      fetch(url).then(res => {
        request()

        if(index === 9) {
          return resolve(‘a(chǎn)ll done!’)
        }
        index++
      })
    }

    // 多個(gè)同時(shí)執(zhí)行
    while(limit > 0) {
      request()
      limit -= 1
    }

  })
}
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JavaScript,通??s寫為 JS,是一種解釋執(zhí)行的編程語言。它是現(xiàn)在最流行的腳本語言之一。 JavaScri...
    神齊閱讀 5,451評論 1 32
  • ECMAScript - 學(xué)習(xí)筆記 ?? ??nvm node.js 包管理工具 nvm github[https:/...
    Super三腳貓閱讀 896評論 0 1
  • css相關(guān) 1. 萬能居中 1.margin: 0 auto;水平 2.text-align: center;水平...
    chaocc閱讀 1,111評論 0 2
  • 1. 基礎(chǔ)類型和類型檢測 簡單類型:Undefined, Null, boolean, number, strin...
    anearseeyou閱讀 324評論 0 0
  • 1.Typescript中的&理解 參數(shù)中的 & 表示props對象同時(shí)擁有了TagManagementState...
    Lethe35閱讀 7,796評論 0 1

友情鏈接更多精彩內(nèi)容