javascript堆栈爆炸

javascript堆栈爆炸,javascript,stack,Javascript,Stack,这表示以下代码将炸毁堆栈: 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();

这表示以下代码将炸毁堆栈:

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();
  });
}
函数fetchLatest(){
$.getJSON('/wait?id='+最后一次看到,函数(d){
$.each(d,function(){
last_seen=parseInt(this.id,10)+1;
ul.prepend($('
  • ').text(this.text)); }); fetchLatest(); }); }
    客户端JavaScript只是使用jQuery的getJSON方法 对简单URL端点执行长轮询 递归地这样做可能是个坏主意,因为它最终会 破坏浏览器的JavaScript堆栈,但它在演示中可以正常工作

    这是真的吗?如果是这样的话,我们怎样才能防止这种情况发生呢

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

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

    这不是真的

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

    如果您这样编写同步代码,它将冻结,然后抛出堆栈溢出