@MrDevil131

Как записать результат работы цикла в переменную и вывести алертом?

Доброго времени суток! Прошу помощи, так как задуманное смог реализовать только частично. Есть необходимость на js в hta файле проверить на доступность список ссылок (ссылки не локальные) и вывести одним алертом список рабочих и нерабочих. Пытался сделать это посредством записи через += в переменную checkURL с \n в качестве разделителя строки, но кроме изначального содержимого переменной ничего не выводится. Здесь оставил рабочий вариант с алертами для каждой ссылки чтобы можно было удостовериться в работоспособности остального кода.

<script type='text/javascript'>
        window.onload = function (){
        var URL = new Array();
        URL[0] = "https://example.com/";
        URL[1] = "https://example.com/";
        URL[2] = "https://example.com/";
        URL[3] = "https://example.com/";
        URL[4] = "https://example.com/";
        URL[5] = "https://example.com/";
        URL[6] = "https://example.com/";
        URL[7] = "https://example.com/";
        URL[8] = "https://example.com/";
        URL[9] = "https://example.com/";
        URL[10] = "https://example.com/";
        URL[11] = "https://example.com/";
        URL[12] = "https://example.com/";
        URL[13] = "https://example.com/";
        URL[14] = "https://example.com/";
        URL[15] = "https://example.com/";
        URL[16] = "https://example.com/";
        URL[17] = "https://example.com/";
        URL[18] = "https://example.com/";
        URL[19] = "https://example.com/";
        URL[20] = "https://example.com/";
        URL[21] = "https://example.com/";
        URL[22] = "https://example.com/";
        var nRequest = new Array();
        var checkURL = 'ДОСТУПНОСТЬ БЭКОФИСОВ:\n';
        for (var i=0; i<22; i++){
           (function(i) {
              nRequest[i] = new XMLHttpRequest();
              nRequest[i].open("GET", URL[i], true);
              nRequest[i].onreadystatechange = function (oEvent) {
                 if (nRequest[i].readyState === 4) {
                    if (nRequest[i].status === 200) {
                      alert (URL[i] + " РАБОТАЕТ\n");
                    } else {
                      alert (URL[i] + " НЕ РАБОТАЕТ\n");
                    }
                 }
              };
              nRequest[i].send(null);
           })(i);
        }
        alert(checkURL);
        }
    </script>


Заранее спасибо за помощь!
  • Вопрос задан
  • 362 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Promise.all(
  URL.map(
    (url) => fetch(url)
      .then((response) => `${url} : ${response.status} ${response.statusText}`)
      .catch((e) => `${url} : ${e.message}`),
  ),
)
.then(
  (results) =>
    alert(results.join("\n")),
);


var unresolved = URL.length;
var results = [];
for (i = 0; i < URL.length; i += 1) {
  (function(i) {
    var request = new XMLHttpRequest();
    request.open("GET", URL[i]);
    request.onreadystatechange = function (event) {
      console.log(request);
      if (request.readyState === 4) {
        if (request.status === 200) {
          results[i] = URL[i] + ' РАБОТАЕТ';
        } else {
          results[i] = URL[i] + ' НЕ РАБОТАЕТ';
        }
        unresolved -= 1;
        console.log(unresolved);
        if (unresolved === 0) {
          alert(results.join("\n"));
        }
      }
    }
    request.send();
  })(i);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы