#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.экран печати результатов — я создал новый проект для тестирования вашего примера