javascript堆栈炸毁

时间:2012-11-29 01:26:07

标签: javascript stack

这个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堆栈,但它适用于演示。

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

1 个答案:

答案 0 :(得分:6)

事实并非如此。

由于getJSON是异步的,因此下一个fetchLatest()调用将在上一个调用结束后的某个时间开始。

如果您编写类似的同步代码,它将冻结,然后抛出堆栈溢出。