Javascript 运行几秒钟后,我的AJAX请求开始崩溃
我正在尝试每4秒刷新页面上的两个元素。我当前的ajax设置如下所示:Javascript 运行几秒钟后,我的AJAX请求开始崩溃,javascript,jquery,ajax,mongodb,handlebars.js,Javascript,Jquery,Ajax,Mongodb,Handlebars.js,我正在尝试每4秒刷新页面上的两个元素。我当前的ajax设置如下所示: setInterval(function () { update() }, 4000); function update() { $.get('/hello', function (data) { console.log("update") $('#main').html(data); });
setInterval(function () {
update()
}, 4000);
function update() {
$.get('/hello', function (data) {
console.log("update")
$('#main').html(data);
});
}
<div id="main">
<div id="recalled">
<ul id="list">
{{#each thing}}
<li>
this.something
</li>
{{/each}}
</ul>
</div>
<div id="more">
<ul>
{{#each anotherThing}}
<li>
this.property
</li>
{{/each}}
</ul>
</div>
</div>
其中,我的HTML有一个id为main的div,其中包含两组s
经过几秒钟的工作,我的列表开始疯狂地复制项目,页面开始滞后。我的控制台中出现一个错误,说“资源不足”。另外,我注意到应该记录在控制台中的“更新”并不是每4秒发生一次,而是在不到0.5秒的时间内持续记录
我尝试过使用setTimeout,但它不起作用
我的车把代码如下所示:
setInterval(function () {
update()
}, 4000);
function update() {
$.get('/hello', function (data) {
console.log("update")
$('#main').html(data);
});
}
<div id="main">
<div id="recalled">
<ul id="list">
{{#each thing}}
<li>
this.something
</li>
{{/each}}
</ul>
</div>
<div id="more">
<ul>
{{#each anotherThing}}
<li>
this.property
</li>
{{/each}}
</ul>
</div>
</div>
最初呈现的数据很好
我只想使用ajax每隔几秒钟刷新列表元素,以显示对用户模型的某个属性的任何更新。ajax请求在几秒钟后开始崩溃,没有给我预期的输出
谢谢你的帮助 看看这个。在当前代码中,无论上一次调用的结果如何,您都严格地每4秒调用一次update函数。因为ajax调用是异步的,所以您应该使用setTimeout来确保上一次调用已经完成。代码中的主要问题是setInterval。setInterval听起来很简单,但这通常是一个缺点。代码的问题是,如果对服务器的请求是否完成,setInterval将丢弃。它只是在4s后将呼叫叠加(可能不是精确的4)。您的api调用有时可能需要4秒以上才能完成,然后您就会陷入混乱 有很多方法可以解决这个问题。一个简单的解决方案是使用
setTimeout(update,4000)
在收到来自api调用的响应后,应在中使用此选项
function update() {
$.get('/hello', function (data) {
console.log("update")
$('#main').html(data);
setTimeout(update,4000)
});
}
听起来您的setInterval调用正在重新加载页面,该页面将再次触发setInterval并添加另一个处理程序,该处理程序也将重新加载页面,该页面将。。。过了一段时间,您就有了许多setInterval处理程序,它们都试图重新加载页面。