【发布时间】:2016-12-21 00:00:10
【问题描述】:
我正在尝试在我的 MVC5 应用程序中使用 ajax 调用控制器上的操作:10 次,延迟 2 秒。
这是我写的代码:
$(document).ready(function () {
(function loop(i) {
setTimeout(function() {
var d = new Date();
console.log(d.getTime());
callAjax();
console.log("works " + i);
if (--i) loop(i);
},
2000); // ms
})(10);
function callAjax() {
$.ajax({
url: '/Home/StartElection',
type: 'POST',
data: "test",
async: true
})
.done(function (partialViewResult) {
$("#partialTable").html(partialViewResult);
});
};
});
控制台日志符合预期(延迟 2 秒),但对控制器的调用会立即发生 - 当我在 Visual Studio 中对控制器操作设置中断时,继续后的下一个调用需要 2 毫秒
我不明白为什么会这样 - 任何人都可以帮忙吗?
编辑:我在 ajax 调用之前添加了 Date.getTime() 的控制台日志,并且每个之间有 2000 毫秒
【问题讨论】:
-
如何检查?
-
我在被调用的动作上有一个断点,一旦我继续它就会再次到达断点
-
嗯,你的代码对我有用jsfiddle.net/j8eouz1w/1
-
@NRKirby 好的,我不太了解 VS IDE 和断点语句,但可以肯定的是,您的客户端发布的代码没有任何问题。问题是 ajax 是异步的,您的代码客户端在下一次循环迭代之前不会等待任何 ajax 响应
-
@NRKirby 您的代码应该是这样的,例如:jsfiddle.net/j8eouz1w/3 这样,如果您的任何 ajax 请求需要超过 2 秒才能完成,它不会发送任何并行请求(如果之前有任何请求)仍在运行。查看一些阅读:reallifejs.com/brainchunks/repeated-events-timeout-or-interval
标签: javascript jquery ajax asp.net-mvc