Javascript 如何执行jQuery超时
使用jQuery。。。如何运行一个函数,然后每隔2分钟运行一个函数 例如: 功能1:运行一次 功能2:在功能1完成后每2分钟运行一次 任何帮助都将不胜感激 C setInterval还返回一个句柄,可用于取消对该函数的进一步调用。Heloo 如果我没弄错的话,这是一个解决方案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
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);