Показать сообщение отдельно
  #3 (permalink)  
Старый 14.10.2023, 04:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

AquaMen, даже если бы это работало - так делать не надо, timeout ничего не гарантирует(по точности времени) и через десяток запросов пойдёт полный расколбас, не говоря уже о занимаемой памяти на ожидание запуска всех этих запросов сразу.

На современном js этот код можно написать весьма наглядно и по-порядку:
function request(url, i) {
  return new Promise((resolve, reject) => {
    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);
          resolve(data);
        } else {
          reject(new Error('Некорректный формат ответа'));
        }
      } else {
        reject(new Error('Ошибка выполнения запроса'));
      }
    };

    xhr.onerror = reject;

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

    xhr.send(params);
  });
}

function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function openURLs() {
  for (let i = 10045; i <= 10100; i++) {
    try {
      const url = `https://www.example.com/create/${i}/`;
      await delay(1000);
      const data = await request(url, i);
      // Дальнейшая обработка данных
    } catch (error) {
      console.error(`Ошибка выполнения запроса для URL ${url}:`, error);
      // Обработка ошибок
    }
  }
}

openURLs();


P.S. try catch у тебя толком ничего не ловят, т.к. все ошибки кидаются в отдельных функциях которе вызывается асинхронно в не рамок блока текущего кода.
__________________
29375, 35

Последний раз редактировалось Aetae, 14.10.2023 в 04:44.
Ответить с цитированием