Браузер продолжает падать из-за цикла while - PullRequest
2 голосов
/ 11 марта 2020

В основном я кодирую код, который берет первую строку из текстовой области, затем отправляет его в код php и возвращает ответ. Однако этого не происходит всякий раз, когда я помещаю данные, браузер перестает работать. Это код, над которым я работаю

function getNewSocks() {
  socksList.splice(0, 1);
  $('#socks').val(socksList.join("\n"));
}
var socksList = $("#socks").val().split("\n");
while (socksList.length) {
  var getTheSocksLine = $.trim(socksList[0].replace(/\s+/g, ''));
  var getIP = $.trim(getTheSocksLine.split(":")[0]);
  var getPort = $.trim(getTheSocksLine.split(":")[1]);

  if (typeof getIP == "undefined" || typeof getPort == "undefined" || getIP == "" || getPort == "") {
    alert("typeof");
    socksDieResultDisplay(getIP + ":" + getPort);
    getNewSocks();
  }
  else if (getTheSocksLine.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}$/) == null) {
    alert("error");
    socksDieResultDisplay(getIP + ":" + getPort);
    getNewSocks();
  }

  else {
    $.ajax({
      url: "system/checkerPostHandler.php",
      method: "POST",
      data: "checkSocks=CheckSocksNowPlease&ip=" + getIP + "&port=" + getPort,
      success: function (getResponse) {
        alert("PHP Response=>" + getResponse + " jQuery Response=>" + getIP);
        if (socksList.length != 0) {
          getNewSocks();
        }

      }
    });
  }

}

Клянусь Богом, сейчас 3-4 часа пытались выяснить, в чем проблема! помогите мне пожалуйста

1 Ответ

1 голос
/ 11 марта 2020

Вы можете ввести счетчик и сопоставить его с socksList.length, если счетчик равен <= для socksList.length, тогда l oop запустится, иначе выйдет.

Проблема с вашим кодом заключается в том, что условие l oop всегда будет выполняться и будет выполняться всегда. Условие socksList.length всегда будет истинным, если socksList.length не 0.

Пример.

function getNewSocks() {
  socksList.splice(0, 1);
  $('#socks').val(socksList.join("\n"));
}
var socksList = $("#socks").val().split("\n");
let counter = 0;
while (counter <= socksList.length) {
  var getTheSocksLine = $.trim(socksList[counter].replace(/\s+/g, ''));
  var getIP = $.trim(getTheSocksLine.split(":")[0]);
  var getPort = $.trim(getTheSocksLine.split(":")[1]);

  if (typeof getIP == "undefined" || typeof getPort == "undefined" || getIP == "" || getPort == "") {
    alert("typeof");
    socksDieResultDisplay(getIP + ":" + getPort);
    getNewSocks();
  }
  else if (getTheSocksLine.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}$/) == null) {
    alert("error");
    socksDieResultDisplay(getIP + ":" + getPort);
    getNewSocks();
  }

  else {
    $.ajax({
      url: "system/checkerPostHandler.php",
      method: "POST",
      data: "checkSocks=CheckSocksNowPlease&ip=" + getIP + "&port=" + getPort,
      success: function (getResponse) {
        alert("PHP Response=>" + getResponse + " jQuery Response=>" + getIP);
        if (socksList.length != 0) {
          getNewSocks();
        }

      }
    });
  }
  counter++;
}

Вы можете использовать socksList.forEach или for of.

for of пример:


for (const socks of socksList) {
  var getTheSocksLine = $.trim(socksList[socks].replace(/\s+/g, ''));
  //..other code
}

forEach пример:


socksList.forEach( socks => {
  var getTheSocksLine = $.trim(socksList[socks].replace(/\s+/g, ''));
  //..other code
});


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...