【问题标题】:javascript stack blow upjavascript堆栈爆炸
【发布时间】:2012-11-29 01:26:07
【问题描述】:

article 表示以下代码会炸毁堆栈:

function fetchLatest() {
  $.getJSON('/wait?id=' + last_seen, function(d) {
    $.each(d, function() {
      last_seen = parseInt(this.id, 10) + 1;
      ul.prepend($('<li></li>').text(this.text));
    });
    fetchLatest();
  });
}

客户端 JavaScript 只是使用 jQuery 的 getJSON 方法 针对简单的 URL 端点执行长轮询 递归地这样做可能是一个坏主意,因为它最终会 破坏浏览器的 JavaScript 堆栈,但它在演示中运行良好。

这是真的吗?如果是这样,我们如何防止这种情况发生?

【问题讨论】:

    标签: javascript stack


    【解决方案1】:

    这不是真的。

    因为getJSON 是异步的,所以下一个fetchLatest() 调用将在前一个调用完成后的某个时间开始。

    如果你写这样的同步代码,它会冻结,然后抛出堆栈溢出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2022-01-18
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多