如何在setInterval jquery中跳过一步

时间:2015-03-16 10:39:19

标签: javascript jquery

如何在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次迭代中。

非常感谢任何帮助。

2 个答案:

答案 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>