实现一个最大个数的并发请求函数

function multiRequest(urls = [], max) {
  const len = urls.length;
  const result = Array(len).fill(null);
  let count = 0;
  return new Promise((resolve, reject) => {
    while (count < max) {
      next();
    }
    function next() {
      let current = count++;
      if (current >= len) {
        !result.includes(null) && resolve(result);
        return;
      }
      let url = urls[current];
      fetch(url)
        .then(res => {
          result[current] = res;
        })
        .catch(err => {
          result[current] = err;
        })
        .finally(() => {
          if (current < len) {
            next();
          }
        });
    }
  });
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容