【问题标题】:Repeat code every 4 seconds每 4 秒重复一次代码
【发布时间】:2011-09-18 04:28:10
【问题描述】:

我想每 4 秒重复一次这段代码,我怎么能用 javascript 或 jquery 轻松地做到这一点?谢谢。 :)

$.get("request2.php", function(vystup){
   if (vystup !== ""){
      $("#prompt").html(vystup);
      $("#prompt").animate({"top": "+=25px"}, 500).delay(2000).animate({"top": "-=25px"}, 500).delay(500).html("");
    }
});

【问题讨论】:

  • 下次也找一些相同的问题——看看这个问题的右边
  • @Niklas, @BeingSimpler 一方面,用户不接受任何答案并不好。然而,他发布的问题的答案并不是很好,以前也没有人要求他接受答案。他可能甚至不知道这是可能的。你的cmets有点多。

标签: javascript jquery


【解决方案1】:

每 2 秒调用一次 Javascript 函数,持续 20 秒。

var intervalPromise;
$scope.startTimer = function(fn, delay, timeoutTime) {
    intervalPromise = $interval(function() {
        fn();
        var currentTime = new Date().getTime() - $scope.startTime;
        if (currentTime > timeoutTime){
            $interval.cancel(intervalPromise);
          }                  
    }, delay);
};

$scope.startTimer(hello, 2000, 10000);

hello(){
  console.log("hello");
}

【讨论】:

    【解决方案2】:
    const milliseconds = 1000 
    
    setInterval(
      () => { 
      // self executing repeated code below
    
    }, milliseconds);
    

    【讨论】:

      【解决方案3】:

      另一种可能性是使用setTimeout,但将其与您的代码一起放在一个函数中,该函数在$.get() 请求的回调中递归调用。

      这将确保请求之间最少间隔 4 秒,因为在收到上一个响应之前下一个请求不会开始。

       // v--------place your code in a function
      function get_request() {
          $.get("request2.php", function(vystup){
             if (vystup !== ""){
                $("#prompt").html(vystup)
                            .animate({"top": "+=25px"}, 500)
                            .delay(2000)
                            .animate({"top": "-=25px"}, 500)
                            .delay(500)
                            .html("");
              }
              setTimeout( get_request, 4000 ); // <-- when you ge a response, call it
                                               //        again after a 4 second delay
          });
      }
      
      get_request();  // <-- start it off
      

      【讨论】:

        【解决方案4】:

        在 javascript 中并不太难。

        // declare your variable for the setInterval so that you can clear it later
        var myInterval; 
        
        // set your interval
        myInterval = setInterval(whichFunction,4000);
        
        whichFunction{
            // function code goes here
        }
        
        // this code clears your interval (myInterval)
        window.clearInterval(myInterval); 
        

        希望这会有所帮助!

        【讨论】:

        • 赞成只回答如何清除间隔。谢谢!
        【解决方案5】:
        setInterval(function(){
          // your code...
        }, 4000);
        

        【讨论】:

          【解决方案6】:

          使用setInterval函数

          setInterval( fn , miliseconds )
          

          来自 MDC 文档:

          总结

          重复调用一个函数,每次调用该函数之间有一个固定的时间延迟。

          语法

          var intervalID = window.setInterval(func, delay[, param1, param2, ...]);
          var intervalID = window.setInterval(code, delay);
          

          在哪里

          intervalID 是您可以传递给 clearInterval() 的唯一间隔 ID。

          func 是你要重复调用的函数。

          code 在替代语法中,是你想要重复执行的一串代码。 (不推荐使用这种语法,原因与使用 eval() 相同)

          delay 是 setInterval() 函数在每次调用 func 之前应该等待的毫秒数(千分之一秒)。与 setTimeout 一样,强制执行最小延迟。

          请注意,在第一种语法中将附加参数传递给函数在 Internet Explorer 中不起作用。

          例子

          // alerts "Hey" every second
          setInterval(function() { alert("Hey"); }, 1000);
          

          【讨论】:

            猜你喜欢
            • 2011-03-24
            • 1970-01-01
            • 2022-12-11
            • 2018-12-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多