并发限制图片加载数量 
js
function loadImage(url, index) {
  return new Promise((resolve, reject) => {
    console.log(`#${index} url: ${url} start`);
    setTimeout(() => {
      console.log(`url: ${url} ok`);
      resolve();
    }, 500);
  });
}
function limitLoad(urls, handler, limit) {
  const sequence = [...urls];
  // 存储异步处理函数的结果
  let promises = [];
  // 限流加载前 limit 个 url
  promises = sequence.splice(0, limit).map((url, index) => {
    return handler(url, index).then(() => index);
  });
  // 先执行第一轮,然后循环处理剩余 url
  let p = Promise.race(promises);
  for (let i = 0; i < sequence.length; i++) {
    p = p.then((data) => {
      promises[data] = handler(sequence[i], i).then(() => data);
      return Promise.race(promises);
    });
  }
}
// 加载 10 张图片,并发量为 3
limitLoad(
  [
    "https://example.com/article-1",
    "https://example.org/gallery/image-2.jpg",
    "https://samplewebsite.net/blog/post-3",
    "https://anotherwebpage.com/videos/watch?v=video-4",
    "https://api.example.io/data/v1/resource-5",
    "https://www.example-edu.com/courses/course-6",
    "https://news-sites.com/top-stories/story-7",
    "https://e-commerce-site.com/products/product-8",
    "https://docs.example-help.com/guides/guide-9",
    "https://social-media-platform.com/profile/user-10",
  ],
  loadImage,
  3
);