Логика блочного цикла JavaScript

#javascript #node.js #arrays #logic

#javascript #node.js #массивы #Логические

Вопрос:

В моем коде есть массив с многочисленными объектами, эти объекты являются URL-адресами, с ними я создаю цикл, который проходит через этот массив и делает запрос для каждого URL-адреса в массиве. Но мне нужно, чтобы мой цикл проходил через массив блоками, например: каждые 10; пока вы не дойдете до конца, все это для того, чтобы вы не делали это мгновенно и в конечном итоге перегружали сервер, а также чтобы переход от 1 к 1 не занимал слишком много времени, потому что массивочень большая, база кода в основном такова.

 const array = ["URL-1","URL-2","URL-3"] etc...

for (var i = 0; i < array.length; i  ) {
    axios.get(array[i], (res) => {
        const res = res;
    });
}
  

Комментарии:

1. Вы могли бы использовать setTimeout?

2. номер запроса слишком велик, чтобы выполнить его сразу, даже используя setTimeout . В конечном итоге я могу получить ошибку 404

3. нет, если вы делаете 10 за раз с перерывом между ними?

4. это вопрос, как мне делать запрос каждые 10 из 10 массивов?

5. Сначала разделить массив? array.splice

Ответ №1:

Скорее всего, есть лучший способ, но с помощью опции setTimeout вы можете попробовать

 let index = 0;
const maxIterations = 10;

function checkUrls() {

        for (var i = index; i < index   maxIterations; i  ) {
            axios.get(array[i], (res) => {
            const res = res;
        }
        index  = maxIterations;
        if (index >= array.length - maxIterations) {
            endOfArray = true;
            clearInterval(timer);
        }

}

const timer = setInterval(checkUrls, 10000);
  

Или что-то в этом роде, надеюсь, это поможет

Комментарии:

1. Я думаю, вы не очень хорошо поняли мой вопрос, в вашем примере он сделает запрос для всего 10-кратного массива, чего я действительно хочу, так это чтобы он проходил мой массив только один раз, только в блоках по 10 из 10. До завершения массива.

2. И это то, что пытается сделать мой код, каждые 10 секунд он будет перебирать массив по 10 элементов за раз, пока не достигнет конца

3. здесь он сделал запрос на 10 и закрыл его, вместо того, чтобы сделать еще 10 запросов

4. Мне нужно будет увидеть вашу текущую реализацию, чтобы иметь возможность помочь в дальнейшем

5.экран печати результатов — я создал новый проект для тестирования вашего примера