2011-05-07 71 views
1

我有一个循环,在循环这样如何产生延迟效应

$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    download(keya,valb); 
}); 
}); 

我想这个下载功能被称为每2秒。 问题是我无法使用setTimeout。

+1

笔者暗示,他不希望在代码中使用的setInterval ,但接受了这个答案。很明显,这个问题没有很好地制定。 – 2011-05-07 14:01:35

+0

非常感谢你,但是如果我可以重申我所说的话,“没有setInterval也没有帮助”。 – Dhiraj 2011-05-07 14:05:07

+1

自澄清之后删除了-1。但我建议阅读:http://meta.stackexchange.com/questions/18584/how-to-ask-a-smart-question。 – 2011-05-07 14:12:28

回答

1

这样做:

var i=1; 
$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    var timerId = setInterval(function(){ 
     download(keya,valb); 
     clearInterval(timerId); 
    }, 2000*(i++));  
}); 
}); 

干杯

+0

是这个解决方案的作品,谢谢 – Dhiraj 2011-05-07 13:56:09

1

如果您想在下次调用之前等待一段时间,请使用jQuery API中的delay方法。

如果您希望您的代码在一段时间后不断再次运行(我认为您的情况基于您的评论),请使用everyTime方法jQuery Timer Plugin

+0

但它说.delay()方法最好是延迟排队的jQuery效果,所以如何在这种情况下使用延迟 – Dhiraj 2011-05-07 13:47:37

+0

好吧,我根据你的评论更新了答案。 – 2011-05-07 13:50:54

+0

非常感谢你erick我得到它的工作:) – Dhiraj 2011-05-07 14:01:40

0

我发现创建一个简单的功能,并通过的setInterval,而不是setTimeout的调用通过函数代码。这实际上取决于你想要做什么。

也许这将更好地工作:

setInterval("fooBar()", 1000); 

function fooBar(){ 
$.each(requiredCities,function(keya,valb){ 
$.each(requiredKeyWords,function(keya,valb){ 
    download(keya,valb); 
}); 
}); 
} 

不知道是否可行,但在第一次刷我认为这将是罚款

+0

非常感谢你悬崖,我得到它的工作:) – Dhiraj 2011-05-07 14:02:14