该文章说,下面的代码将炸毁堆栈:
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();
});
}
Run Code Online (Sandbox Code Playgroud)
客户端JavaScript只是使用jQuery的getJSON方法对一个简单的URL端点执行长轮询这种递归操作可能是一个坏主意,因为它最终会破坏浏览器的JavaScript堆栈,但它可以用于演示.
这是真的吗?如果是这样,我们怎么能阻止这个?
事实并非如此.
因为getJSON
是异步的,所以下一个fetchLatest()
调用将在前一个调用结束后的某个时间开始.
如果您编写类似的同步代码,它将冻结,然后抛出堆栈溢出.
归档时间: |
|
查看次数: |
197 次 |
最近记录: |