node之请求管理器

当同时有很多请求发起时,会严重降低每个请求的响应速度,或导致接口请求失败,所以需要控制请求并发数,createRequestManage函数可以创建一个全局的请求管理器,管理请求,请求超过上限时,会将请求放入队列。

function createRequestManage(limit) {
  let currentTotal = 0
  let todoList = []
  return {
    schedule(callback) {
      if (currentTotal > limit) {
        todoList.push(callback)
      } else {
        currentTotal++
        let next = () => {
          currentTotal--
          if (todoList.length > 0) {
            let cb = todoList.shift()
            cb().finally(next)
          }
        }
        callback().finally(next)
      }
    }
  }
}

如何使用:

const requestManage = createRequestManage(500)
request.schedule(()=> {
  axios.get('').then(res=>{})
})

你可能感兴趣的