很难说你遇到了什么,问题有点不清楚。
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);
}
});
}
...因为毕竟,您的ajax 呼叫可能需要一秒钟以上才能完成。
如果这不是你遇到的问题,我猜你的代码看起来像这样:
setInterval(function() {
$.ajax("your_url", {
success: function() {
// Do something here
}
});
// Do something else here
}, 1000);
...您想知道为什么“在此处执行其他操作”代码在“在此处执行操作”代码之前运行。如果是这样,原因是默认情况下,ajax 调用是异步。您对$.ajax 的呼叫开始,仅此而已;然后所有其他代码在成功(或错误)回调发生之前运行。
当然,解决方法是在依赖成功回调的顶层不做任何事情:
setInterval(function() {
$.ajax("your_url", {
success: function() {
// Do something here
// Do something else here
}
});
}, 1000);