Sobes.tech
Middle+
27

Вазифаи амалӣ: функсияеро таҳия кунед, ки массиви URL-ҳо ва маҳдудияти дархостҳои ҳамзамонро қабул мекунад, ва дархостҳои fetch-ро бо маҳдудияти иҷрои параллелӣ (на бештар аз limit дархост дар як вақт) иҷро мекунад, натиҷаҳоро дар тартиби аслӣ бармегардонад.

Ширкатҳо дар куҷо пурсиданд
OZONOZON

Ҷавоб аз AI

sobes.tech AI

Для решения задачи с ограничением количества одновременных fetch-запросов можно использовать очередь и контролировать количество активных промисов. Ниже пример реализации на JavaScript с использованием async/await:

async function limitedFetch(urls, limit) {
  const results = new Array(urls.length);
  let activeCount = 0;
  let currentIndex = 0;

  return new Promise((resolve, reject) => {
    function next() {
      if (currentIndex === urls.length && activeCount === 0) {
        resolve(results);
        return;
      }

      while (activeCount < limit && currentIndex < urls.length) {
        const index = currentIndex++;
        activeCount++;
        fetch(urls[index])
          .then(res => res.text()) // или res.json() в зависимости от задачи
          .then(data => {
            results[index] = data;
          })
          .catch(err => {
            results[index] = err;
          })
          .finally(() => {
            activeCount--;
            next();
          });
      }
    }

    next();
  });
}

В этом коде мы запускаем не более limit запросов одновременно, и по завершении каждого запускаем следующий из очереди. Результаты сохраняются в массиве results в исходном порядке.