Показать сообщение отдельно
  #1 (permalink)  
Старый 14.10.2023, 03:47
Новичок на форуме
Отправить личное сообщение для AquaMen Посмотреть профиль Найти все сообщения от AquaMen
 
Регистрация: 14.10.2023
Сообщений: 1

Не понимаю как работает setTimeout в коде
Есть код:
function openURLs() {
  for (let i = 10045; i <= 10100; i++) {
    const url = `https://www.example.com/create/${i}/`;
    setTimeout(() => {
      try {
        const xhr = new XMLHttpRequest();
        xhr.open('POST', url, true);
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.withCredentials = true;

      // Добавляем заголовки
      xhr.setRequestHeader('authority', 'www.example.com');
      xhr.setRequestHeader('method', 'POST');
      xhr.setRequestHeader('path', `/create/${i}/`);
      xhr.setRequestHeader('scheme', 'https');
      xhr.setRequestHeader('accept', '*/*');
      xhr.setRequestHeader('accept-language', 'en-US,en;q=0.9');
      xhr.setRequestHeader('dpr', '1');
      xhr.setRequestHeader('viewport-width', '814');
      xhr.setRequestHeader('x-asbd-id', '129477');
      xhr.setRequestHeader('x-csrftoken', 'token');
      xhr.setRequestHeader('x-ig-app-id', 'id');
      xhr.setRequestHeader('x-ig-www-claim', 'wwwclaim');
      xhr.setRequestHeader('x-________-ajax', 'id');
      xhr.setRequestHeader('x-kl-ajax-request', 'Ajax_Request');
      xhr.setRequestHeader('x-requested-with', 'XMLHttpRequest');

      xhr.onload = function () {
          if (xhr.status === 200) {
            const contentType = xhr.getResponseHeader('content-type');
            if (contentType && contentType.includes('application/json')) {
              const data = JSON.parse(xhr.responseText);
              console.log(`Открыт URL ${url}:`, data);
              // Дальнейшая обработка данных
            } else {
              throw new Error('Некорректный формат ответа');
            }
          } else {
            throw new Error('Ошибка выполнения запроса');
          }
        };

        xhr.onerror = function () {
          console.error(`Ошибка выполнения запроса для URL ${url}:`, xhr.statusText);
          // Обработка ошибок
        };

        const params = new URLSearchParams();
        params.append('container_module', 'single_post');

        xhr.send(params);
      } catch (error) {
        console.error(`Ошибка выполнения запроса для URL ${url}:`, error);
        // Обработка ошибок
      }
    }, i * 1000);
  }
}

openURLs();


Мне нужен таймаут между запросами - секунда. Код выполняю в консоли браузера, на странице сайта, а результат смотрю в колонке "Сеть". И сначала проходит много времени, очень похоже на "количество запросов*таймаут" а потом в инструментах разраба резко появляется куча запросов. Почему?
Ответить с цитированием