【问题标题】:jQuery getJson in a loop stops looping after n number of loops循环中的jQuery getJson在n次循环后停止循环
【发布时间】:2013-08-30 06:43:02
【问题描述】:

您好,我在页面顶部显示了货币对汇率。速率值通过 getJson 在循环中为每对拉入。在我的开发服务器上,al 很好,但在实时服务器上,循环在第 4 次有时会在第 5 次迭代后停止执行,并且控制台中没有错误。

var tapeQuotePairs = [
  "EUR/USD",
  "GBP/USD",
  "AUD/USD",
  "USD/CAD",
  "USD/JPY",
  "USD/CHF",
  "USD/ZAR",
  "XAU/USD",
  "USD/BRL",
  "BTC/USD"
];

$.each(tapeQuotePairs, function(i, item) {

  var bc = item.split("/"); 

  $.getJSON(quoteUrl, {
      base: bc[0],
      quote: bc[1]
  })
  .done(function(data) {
    console.log(qi);
    console.log(quoteUrl); 
    qi++;
    if (qi == qCsize) {
      qSeparator = "";
    }else{
      qSeparator = ":::";
    }
    $("#ticktape").append(bc[0] + bc[1] + data.rate.toFixed(4) + qSeparator);
    })
  .fail(function() { 
    $("#ticktape").append(bc[0] + bc[1] + "n/a");
  });

});

【问题讨论】:

  • 请求是否全部发送?
  • fail 函数是否曾经被执行过?
  • qi 来自哪里?
  • 这很可能与同时触发的许多 ajax 请求有关。也许您的服务器超载了?
  • @jwatts1980 否 fail 从不执行。它只是在大约 4 次左右的循环后停止,没有错误。

标签: javascript jquery getjson each


【解决方案1】:

我查看了我的实时服务器的错误日志,发现:

[2013 年 8 月 29 日星期四 23:44:00] [错误] [客户端 xxx.xxx.xxx.xxx] (12)不能 分配内存:无法创建子进程:/somedirectory/suphp/sbin/suphp 对于/some/home/public_html/xxx.php,推荐人: http://example.com/

我在每个请求之前添加了 1 秒的延迟,并且还在 php.ini 中将 memory_limit = 16M; 更改为 memory_limit = 256M;。 (共享主机)

目前没有问题。 (感谢@RobSchmuecker 为我指明了正确的方向)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-31
    • 2022-01-11
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多