完成后10秒重复运行一个函数(JavaScript)

时间:2015-02-11 04:07:02

标签: javascript jquery

我有一个使用“post”从服务器获取数据并处理它的函数。数据量不同,功能可能需要很长时间才能完成(30秒)。我希望重复调用该函数,但在完成上一次迭代后仅10秒。 *函数的结果存储在全局中,并在同一函数的下一次迭代中使用。 我已经尝试过setInterval和setTimeout但是其中任何一个似乎都没有给我我正在寻找的结果。 有什么想法吗?

5 个答案:

答案 0 :(得分:2)

function foo(){
  $.post( "test.php", { name: "John", time: "2pm" })
      .done(function( data ) {
        // do your stuff with returned data
        // and call itself again...
        setTimeout(foo, 10000);
  });
}  

这种方法不起作用吗?

答案 1 :(得分:1)

function a(){
 //do stuff

 setTimeout(a, 10000); //has to be at the end of the execution. If you're doing things asynchronously that's a different story. 

}

答案 2 :(得分:0)

函数setTimeout()可用于此目的。但是必须首次调用该方法,然后函数本身再次调用该方法。

    function method(){

         console.log('method invoked');
         setTimeout(method, 10000);
    }

    method();

答案 3 :(得分:0)

var $id = 1;
var Interval ;
$(function(){
      callAjax();//Starts Interval
});

functoin callAjax()
{
Interval =   setInterval(function () {
            try {
                if($id > 0)
                {
                $.ajax({
                    url: _MyUrl + $id,
                    success: function (calbkData) {
                        $id = 0;
                        if (parseInt(calbkData.id) > 0) {
                            $id = calbkData.id;
                            OpenMsg(calbkData.id);
                        }
                    },
                    global: false, // this makes sure ajaxStart is not triggered
                    dataType: 'json'
                    //,complete: longpoll
                });
                }
            } catch (e) {
           //     alert(e);
            }

        }, 10000);
}

这对我来说非常好。

答案 4 :(得分:-1)

function Test()
{
  //Your code here

 setTimeout(Test(),10000);
 //Its used to set time interval after your iteration is run

}