goo*_*ing 2 javascript jquery setinterval
我使用setInterval,有时它发生"太快".在这里看起来如何:
setInterval(function() {
//here comes ajax functions and so on.
}, 1000);
Run Code Online (Sandbox Code Playgroud)
有时setInterval比所有那些ajax函数发生得更快,它给了我两条消息而不是一条消息.这有什么解决方案?
T.J*_*der 10
很难说出你遇到了什么,问题有点不清楚.
setInterval对于某些事情来说非常棒,但对于任何你将混合其他异步内容的东西都没有.相反,使用"重新安排setTimeout"成语:
setTimeout(doSomething, 1000);
function doSomething() {
$.ajax("your_url", {
success: function() {
// Do something here
// Do something else here
},
complete: function() {
// Previous run complete, schedule the next run
setTimeout(doSomething, 1000);
}
});
}
Run Code Online (Sandbox Code Playgroud)
...因为,毕竟,你的ajax电话可能需要一秒钟才能完成.
如果这不是你遇到的问题,我的猜测是你的代码看起来像这样:
setInterval(function() {
$.ajax("your_url", {
success: function() {
// Do something here
}
});
// Do something else here
}, 1000);
Run Code Online (Sandbox Code Playgroud)
...而且你想知道为什么"在这里做其他事情"代码在"在这里做点什么"代码之前运行.如果是这样,原因是默认情况下,ajax调用是异步的.您对通话$.ajax 开始通话,但仅此而已; 然后所有其他代码在成功(或错误)回调发生之前运行.
当然,解决方法是在顶级依赖成功回调的情况下不做任何其他事情:
setInterval(function() {
$.ajax("your_url", {
success: function() {
// Do something here
// Do something else here
}
});
}, 1000);
Run Code Online (Sandbox Code Playgroud)