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