每4秒重复一次代码

时间:2011-06-19 14:45:30

标签: javascript jquery

我想每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("");
    }
});

6 个答案:

答案 0 :(得分:24)

使用setInterval功能

setInterval( fn , miliseconds )

来自MDC docs:

  

<强>摘要

     

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

     

<强>语法

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

,其中

     

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

     

func 是您想要重复调用的函数。

     备用语法中的

代码是您想要重复执行的代码字符串。 (建议不要使用此语法,原因与使用eval())

相同      

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

     

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

实施例

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

答案 1 :(得分:18)

setInterval(function(){
  // your code...
}, 4000);

答案 2 :(得分:11)

在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); 

希望这有帮助!

答案 3 :(得分:11)

另一种可能性是使用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 :(得分:0)

import os
import importlib

def get_seeds(path):
    Path = os.path.normpath(path)
    folders = Path.split('/') # create list of each folder component of the path
    folder_path = '/'.join(folders[:-1]) # remove the file from the path to specify path to the folder containing script
    sys.path.insert(1, folder_path) # add folder path to sys path so python can find module

    mod = importlib.import_module(folders[-1][:-3]) # get rid of .py extension and use only name of the script rather than entire path
    return mod.seeds

答案 5 :(得分:0)

每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");
}