繁体   English   中英

由于while循环,浏览器不断崩溃

[英]Browser keeps crashing becuase of a while loop

基本上,我正在编写一个代码,该代码从 textarea 中获取第一行,然后将其发送到 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 个小时试图找出问题所在! 请帮帮我

如果计数器<=到 socksList.length,您可以引入一个计数器并将其与socksList.length socksList.length然后循环将运行,否则将退出。

您的代码的问题是循环条件将始终为真,并且将始终运行。 如果socksList.length不是0socksList.length条件将始终为真。

例子。

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.forEachfor 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
});


暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM