Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何执行jQuery超时_Javascript_Jquery - Fatal编程技术网

Javascript 如何执行jQuery超时

Javascript 如何执行jQuery超时,javascript,jquery,Javascript,Jquery,使用jQuery。。。如何运行一个函数,然后每隔2分钟运行一个函数 例如: 功能1:运行一次 功能2:在功能1完成后每2分钟运行一次 任何帮助都将不胜感激 C setInterval还返回一个句柄,可用于取消对该函数的进一步调用。Heloo 如果我没弄错的话,这是一个解决方案 function func1() {} function func2() {} window.onload = function() { func1(); var flag_first_call_is_after_2

使用jQuery。。。如何运行一个函数,然后每隔2分钟运行一个函数

例如:

功能1:运行一次

功能2:在功能1完成后每2分钟运行一次

任何帮助都将不胜感激

C

setInterval还返回一个句柄,可用于取消对该函数的进一步调用。

Heloo 如果我没弄错的话,这是一个解决方案

function func1()
{}

function func2()
{}

window.onload = function()
{
func1();

var flag_first_call_is_after_2=0;
var interv = setInterval(
function()
{
if(flag_first_call_is_after_2==0)
{
flag_first_call_is_after_2=1;
}
else
{
func2();
}
}
,120000
);
}
jQuery的
delay()
函数不能替代javascript的
setInterval
setTimeout
。要在页面加载时运行函数#1一次,然后每2分钟运行函数#2,请执行以下操作:

function funcOne() { 
  // some javascript
  setInterval('funcTwo()', 1000*60*2);
};

function funcTwo() { 
  // some other javascript
};

$(document).ready(function() {
  funcOne();
});

记住,您使用JQuery是因为它使javascript更简单JQuery是一个javascript库,而不是一种语言,这意味着您可以在它上面完美地使用javascript函数

对于您的问题,您只需要使用setTimeout调用第二个函数,并在该函数中放入另一个
setTimeout(ms)

像这样:

function f1(/*...*/){}
var t = setTimeout("f2()",2 * 60 * 1000);
f2()
函数的末尾,应该包含另一个setTimeout,以便每2分钟调用一次该函数

function f2(/*...*/){
    //...
    t = setTimeout("f2()",2 * 60 * 1000);
}

取消对
f2()
的调用同样简单:
clearTimeout(t)

我宁愿使用setTimeout()。它应该对浏览器要求更低,处理器效率更高

以下是您的函数的外观:

function f2(){
    t = setTimeout(f2, 2000 * 60);
    // code for f2
}

function f1(){
    // code for f1
    setTimeout(f2, 2000 * 60);
}
然后,无论您希望从何处开始整个过程,调用第一个函数:

var t;
f1();
您可以随时停止循环:

clearTimeout(t);

确保在f2开始时触发setTimeout,使其恰好每2分钟触发一次。“setTimeout”之前的任何代码,花“x”时间处理都会导致下一个f2调用在2分钟+x后触发。

谢谢@spicavigo。setinterval是否比使用jQuery.delay()更好?他的意思是在第一个函数的第一次调用2分钟后,它取决于用例。如果我的用例像你提到的那样简单,并且只有在我做一些复杂的事情时才使用第三方提供的,比如jQuery,那么我会使用setInterval。谢谢@Marwan。我将代码更改为每2分钟运行一次,在
setInterval()
setTimeout()
中使用字符串表达式被认为是不好的做法。行
setInterval('functwoo()',1000*60*2)可以重写为
setInterval(funcTwo,1000*60*2)如果需要向函数传递参数该怎么办@ZanfasetInterval(function(){funcTwo(arg1,arg2)},1000*60*2);然后使用AndreasAL所示的匿名函数,或者重写该函数以不使用参数。请确保您清楚“f1已完成”的真正含义。如果在f1中有任何异步(ajax)调用,则可能需要在回调函数中激发f2。
clearTimeout(t);