在这段代码中我希望当.ch1类的div改变背景为answer_box_small_orange.png时,其他底部js行代码不会运行,并且没有ajax请求发送到3秒并且我使用
window.setTimeout(function () {}, 3000)
但它无法正常工作
首先,我请求并获取数据,这是好的
$.ajax({
type:'post',
url:'http://207.154.251.233:8039/app.php/question/get',
data:JSON.stringify({apikey:'jwebdpqodp9fgkwjebfkdpqihdqlwkndqp'}),
success:(function (response) {
var x = response;
$("#question").text(x.result.question);
$(".op1").text(x.result.options["1"]);
})
});
我在函数中插入了ajax代码和其他一些代码,因为我想每60秒运行一次
function myInterval () {
$(".ch1").css('background-image','url(image/answer_box_small.png)');
var clock;
$(document).ready(function() {
clock = new FlipClock($('.clock'), 60, {
clockFace: 'Counter',
autoStart: true,
countdown: true,
callbacks: {
stop: function() {
$('#loading').fadeIn('5000');
$.ajax({
type:'post',
url:'http://79.175.166.98/',
data:JSON.stringify({apikey:'jwebdpqodp9fgkwjebfkdpqihdqlwkndqp'}),
success:(function (response) {
$('#loading').fadeOut('slow');
var x = response;
$("#question").text(x.result.question);
$(".op1").text(x.result.options["1"]);
var answer = x.result.answer;
if(answer == 1){
$(".ch1").css('background-image','url(image/answer_box_small_orange.png)');
}
window.setTimeout(function () {}, 3000);
})
});
}
}
});
});
}
myInterval();
window.setInterval(function(){
myInterval();
}, 60000);
答案 0 :(得分:0)
根据您告诉我的内容,我的解释是您拥有setTimeout()
功能和setInterval()
功能。 setTimeout()
在开始时运行并将等待3秒。然后调用ajax
函数每6秒创建一个新请求。您的问题似乎是在您创建第一个setTimeout()
请求后重新运行了第一个AJAX
,但您希望它停止。
取自W3
setTimeout返回值:一个数字,表示设置的计时器的ID值。将此值与clearTimeout()方法一起使用可取消计时器。
知道这一点,我们基本上可以取消setTimout()
功能。在您的情况下,第一个setTimeout()
。
考虑一下,
var firstIntervalID = setTimeout(function() {
$.ajax() {
// First AJAX ran after three seconds.
}
}, 3000);
clearTimeout(firstIntervalID);
// Your code resumes to set an interval every 60 seconds without having to worry about the three seconds set before
myInterval();
var secondIntervalID = setInterval(function(){
myInterval();
}, 60000);
基本上,当您不再需要时,取消setTimeout()
。你的申请可能与我写的不同,但主要的想法是一样的。使用setTimeout()
ID
上的setTimeout()
取消/清除clearTimeout()
。