如何在jquery setInterval函数中跳过一步
e.g
<script>
// start updating continuously
var timer, delay = 3000; // time in milli seconds
timer = setInterval(function(){
// do something for each iteration
// I want to do this only once
if(result["pass"]){
$("#test").append("<li>Passed</li>");
}
// do something for each iteration
}, delay);
</script>
如果发生一次,我怎么能跳过一个或多个步骤呢? 我只想在它发生一次时跳过。例如,如果条件在第101次迭代中为真,那么它将不会在前100次迭代中发生,但如果条件在第102次迭代中仍为真,则不应该发生,因为它发生在第101次迭代中。
非常感谢任何帮助。
答案 0 :(得分:0)
这是你可以使用闭包的一个很好的例子。您可以创建一个返回函数的函数。
这允许您在外部函数的范围内声明一个变量,然后内部函数可以访问该变量。
function getIntervalHandler() {
var hasPassed = false;
return function() {
if(!hasPassed) {
if(result["pass"]){
$("#test").append("<li>Passed</li>");
hasPassed = true;
}
}
};
}
timer = setInterval(getIntervalHandler(), delay);
答案 1 :(得分:0)
<script>
// start updating continuously
var timer, delay = 3000; // time in milli seconds
var alreadyAdded=false;
timer = setInterval(function(){
// do something for each iteration
// I want to do this only once
if(!alreadyAdded && result["pass"]){
$("#test").append("<li>Passed</li>");
alreadyAdded=true;
}
// do something for each iteration
}, delay);
</script>