我需要的是javascript继续检查条件(类似于while循环)。我这样做是通过执行一个setInterval,如果满足条件,我会清除然后退出的时间间隔,或者如果它已经运行了X次,在我有下面的情况下,我将它设置为100。
我不喜欢这么多,我把它扔在一起因为它有效。我正在检查来自服务器的数据,这很慢。我想要一个替代方案的主要原因是我有一个在启动AJAX调用时运行的加载gif,我会将此代码粘贴到底部以显示。它运行缓慢,所以我相信当javascript在区间内时,它无法渲染gif,因此运动图像就会停止。
任何人都知道做我想要的替代方案吗? 我希望这有道理吗?
function checkCondition(name,action){
var timesRun = 0;
var success = false;
var interval = setInterval(function() {
timesRun++;
var container = {};
container = mapSystem["desktop"];
if(action === "delete"){
var isExisting = name in container ;
if ( !isExisting || (timesRun === 100)) {
//break out of this interval
clearInterval(interval);
renderCheckList();
success = true;
} else {
// Update mapNodeData with fresh data
updateData('desktop', false); // Just updates data
}
}
}, 2000);
}
// Code that I have to render a loading GIF. Works great but seems
// to stop during the interval
$('#loading').hide().ajaxStart(function() {
$(this).show();
}).ajaxStop(function() {
$(this).hide();
});
答案 0 :(得分:1)
如果您使用.ajax()而不是ajaxStart,则可以设置在操作完成时执行的函数:
来自文档:
完成
类型:函数(jqXHR jqXHR,String textStatus)
一个功能 在请求完成时调用(成功和错误之后) 回调被执行)。该函数传递了两个参数:The jqXHR(在jQuery 1.4.x,XMLHTTPRequest中)对象和一个字符串 对请求的状态进行分类(“成功”,“未修改”, “error”,“timeout”,“abort”或“parsererror”)。截至jQuery 1.5, 完整设置可以接受一系列功能。每个功能都会 被轮流打电话。这是一个Ajax事件。
您还可以使用成功和错误属性为成功或失败指定不同的功能。