Javascript setTimeout方法执行一次

Javascript setTimeout方法执行一次,javascript,settimeout,Javascript,Settimeout,当我单击复选框时,函数会暂停5秒,然后快速循环$。每个循环都跳过setTimeout方法。我假设setTimeout每次通过$时都会延迟5秒。每个循环?我怎样才能做到这一点?谢谢 checkBox.addEventListener('click', function() { var countLoop = 0; $.each(placeObject, function(key,value) {

当我单击复选框时,函数会暂停5秒,然后快速循环$。每个循环都跳过setTimeout方法。我假设setTimeout每次通过$时都会延迟5秒。每个循环?我怎样才能做到这一点?谢谢

    checkBox.addEventListener('click', function() {
            var countLoop = 0;            
            $.each(placeObject, function(key,value) {
                setTimeout(function() {placesSearch(key,value);}, 5000);
                console.log("Loop :" + countLoop++);                
            });         
        }, 
        false);

检查这把小提琴:

这里有一些JS功夫给你: 这是它的小提琴


注意:切勿仅使用千斤顶锤钻孔。

检查此小提琴

这里有一些JS功夫给你: 这是它的小提琴


注意:切勿仅使用千斤顶锤钻孔。

设置超时返回超时ID,并立即执行此操作。它将在将来的设定时间对要执行的操作进行排队。但是,由于立即返回,它实际上不会暂停其所在代码的执行


如果您希望
$中的代码。每个
在暂停后运行,则
$中的所有代码。每个
都需要用
setTimeout
setTimeout
包装,并立即返回超时的ID。它将在将来的设定时间对要执行的操作进行排队。但是,由于立即返回,它实际上不会暂停其所在代码的执行


如果您希望
$中的代码。每个
在暂停后运行,则
$中的所有代码。每个
都需要使用
设置超时

包装,如果您希望每个都在彼此之间的5秒内触发,即第一次迭代在5秒后触发,第二次迭代在10秒后触发,等等。。然后,您需要通过计数索引将每个超时的延迟相乘

var countLoop = 1;            
$.each(placeObject, function(key,value) {
  setTimeout(function() {placesSearch(key,value);}, 5000*countLoop);
  console.log("Loop :" + countLoop++);                
}); 
我创建了一个演示,还演示了作用域如何影响您使用
console.log()
打印的值。请参阅此小提琴以了解示例:


如果您希望每个迭代在彼此之间的5秒钟内启动,即第一次迭代在5秒钟后启动,第二次迭代在10秒钟后启动,等等。。然后,您需要通过计数索引将每个超时的延迟相乘

var countLoop = 1;            
$.each(placeObject, function(key,value) {
  setTimeout(function() {placesSearch(key,value);}, 5000*countLoop);
  console.log("Loop :" + countLoop++);                
}); 
我创建了一个演示,还演示了作用域如何影响您使用
console.log()
打印的值。请参阅此小提琴以了解示例:


您不能在JavaScript中暂停。
setTimeout()
函数建立一个动作,该动作将在未来给定的毫秒数内发生,但它会立即返回。您不能在JavaScript中暂停。
setTimeout()
函数建立一个操作,该操作将在未来给定的毫秒数内发生,但它会立即返回。这有什么帮助,不只是包括console语句吗?它仍然延迟1x,然后在那里快速循环。这有什么帮助,不包括控制台语句吗?它仍然会延迟1x,然后在那里快速循环。我编辑了我的代码,大部分时间它都在工作。出于某种原因,它一直打印到控制台“Loop:32”(my placeObject中有32项)@wannabe_n00b Try,而不带
value=key块。如果
placeObject
index
key
)中的32项不是31(0-31)?@wannabe\u n00b您现在可以发布代码片段吗?在中执行的代码将依赖于其父“作用域”,因此,如果console.log(countLoop)在超时范围内,则在执行代码时,它将已为32。这有意义吗?如果希望console.log记录正确的迭代,则需要将其分配给临时变量。看我的小提琴:(这能回答你的问题吗?)我错误地使用countLoop来设置值,现在它工作得很好。谢谢setTimeout允许我现在使用谷歌地图API。我之前因为提出请求太快而被拒绝了没问题!如果我回答了你的问题,请别忘了将我的答案标记为正确的解决方案:)我编辑了我的代码,它大部分都在工作。出于某种原因,它一直打印到控制台“Loop:32”(my placeObject中有32项)@wannabe_n00b Try,而不带
value=key块。如果
placeObject
index
key
)中的32项不是31(0-31)?@wannabe\u n00b您现在可以发布代码片段吗?在中执行的代码将依赖于其父“作用域”,因此,如果console.log(countLoop)在超时范围内,则在执行代码时,它将已为32。这有意义吗?如果希望console.log记录正确的迭代,则需要将其分配给临时变量。看我的小提琴:(这能回答你的问题吗?)我错误地使用countLoop来设置值,现在它工作得很好。谢谢setTimeout允许我现在使用谷歌地图API。我之前因为提出请求太快而被拒绝了没问题!如果我回答了你的问题,请别忘了将我的答案标记为正确的答案:)谢谢,现在有意义了。我觉得它耽搁了。谢谢,现在说得通了。我觉得这件事耽搁了。
var countLoop = 1;            
$.each(placeObject, function(key,value) {
  setTimeout(function() {placesSearch(key,value);}, 5000*countLoop);
  console.log("Loop :" + countLoop++);                
});