【问题标题】:jQuery function keeps looping without stoppingjQuery函数不断循环不停
【发布时间】:2020-03-11 20:09:22
【问题描述】:

我不知道这段代码有什么问题。代码取第一行,检查它,然后删除它,然后检查下一行。但是,当所有行都为空时,代码将继续工作;它不会停止。

function getSocksListInput() {
  var socksList = $("#socks").val().split("\n");
  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 == "" && socksList.length != 0) {
    getNewSocks();
    console.log("i will not stop");
    getSocksListInput();
  } else if (getTheSocksLine.match(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,6}$/) == null) {
    socksDieResultDisplay(getIP + ":" + getPort);
    getNewSocks();
    getSocksListInput();
  } else if (getIP == "" || getPort == "" || getTheSocksLine == "") {
    getNewSocks();
    getSocksListInput();
  } else {
    checkSocksLiveDie(getIP, getPort);
  }
}

如果我将socksList.length 条件更改为!= 1,它将正常停止,但不会检查最后的结果。为什么?

【问题讨论】:

  • 为什么你递归getSocksListInput();?显然你的支票放得不好。因此,您进入递归并且永远不会退出。 getNewSocks(); 是做什么的?
  • 请创建一个minimal reproducible example

标签: jquery html regex ajax


【解决方案1】:

您几乎在所有条件分支中都不断调用getSocksListInput() - 当然它会不断打印。

【讨论】:

  • 是的,我需要继续调用它,因为它会一直检查行,如果我删除它,它只会检查第一行然后停止。
  • 那么你需要向它传递一些参数,以便它知道停止 - 或更新它正在解析的值,这样它就不会卡在同一个条件分支循环中
  • 我需要通过什么?我已经说过我通过了数组的计数,但它不起作用
  • 我看不到将参数传递给该函数的任何地方。您可以分享一些您期望的示例输入吗?你期望发生什么?当我阅读代码时,听起来它的行为完全符合我的意思。也许我错过了一些额外的背景
  • 哦等等。我想也许我明白了。将您的第一个条件更改为:if((typeof getIP == "undefined" || typeof getPort == "undefined" || getIP == "" || getPort == "") && socksList.length != 0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2015-11-23
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多