setTimeout方法执行一次
setTimeout method executing one time
当我单击checkBox时,该函数犹豫了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);
setTimeout
返回超时的ID,并且立即返回。它将在将来的某个时间执行的操作排成队列。但是,由于立即返回,它实际上不会暂停它所驻留的代码的执行。
如果您希望$.each
中的代码在暂停后运行,则$.each
中的所有代码都需要用setTimeout
检查提琴: http://jsfiddle.net/6dzp1sj7/1/
checkBox.addEventListener('click', function() {
var countLoop = 0;
$.each(placeObject, function(key,value) {
setTimeout(function() {
placesSearch(key,value);
console.log("Loop :" + countLoop++);
}, (5000 * (key + 1)));
});
},
false);
这里有一些JS功夫给你:这是它的提琴 http://jsfiddle.net/6dzp1sj7/3/
var placeObject = [0, 1, 2, 3, 4, 5];
var countLoop = 0;
function tmp (key, value) {
console.log(key);
console.log(value);
console.log("Loop :" + countLoop++);
}
var code = "";
$.each(placeObject, function(key,value) {
var tmpl = "setTimeout(function() {tmp(" + key + ", " + value + ");__##__}, 1000);";
if (key == 0) code = tmpl;
if (key != 0) {
code = code.replace('__##__', tmpl);
}
if (key == (placeObject.length - 1)) {
code = code.replace('__##__', '');
//console.log(code);
eval(code);
}
});
注意:千万不要用千斤顶钻一个孔。
如果您希望每个迭代在5秒内触发,即第一次迭代在5秒后触发,第二次迭代在10秒后触发,等等。然后您需要通过计数索引乘以每个单独超时的延迟。
var countLoop = 1;
$.each(placeObject, function(key,value) {
setTimeout(function() {placesSearch(key,value);}, 5000*countLoop);
console.log("Loop :" + countLoop++);
});
我已经创建了一个演示,它还说明了作用域将如何影响您使用console.log()
打印出来的值。请看下面的例子:
相关文章:
- 什么'是从对象列表中一次编辑一个对象的正确Angular/Firebase方法
- setInterval 只在对象方法上运行一次
- Javascript 计时器只调用一次 Code 隐藏方法
- 优化的方法;标题“;只发送一次POST请求即可访问网站
- 一次更改数组的多个值的最短方法
- 有没有一种方法可以在一次调用中修改每个jquery对象的特定属性
- 从命令行一次运行大量摩卡测试的好方法是什么
- 有没有可能的方法可以在一次ASP按钮单击中同时显示JavaScript和服务器端代码中的消息
- 在AngularJS中,一次进行两次调用是一种可接受的方法
- SignalR 一次订阅所有中心/方法
- 只需要运行一次 location.reload 方法
- 一种一次编辑具有不同值的表的多行的方法
- 一次测试 2 个以上值的相等性的快速方法
- 在每秒 10 次调用限制的情况下一次发出 50 个 API 请求的有效方法是什么(烂番茄 API)
- 在Angularjs中只运行一次方法
- 有没有一种方法可以包括<脚本>或者<link>在所有页面中显示一次
- jQuery函数,每10秒从客户端调用一次控制器方法mvc剃刀
- cookie是jQuery为每个用户只打开一次弹出窗口的唯一方法吗?或者jQuery可以处理IP验证
- 在一次使用后删除Javascript模块中的公共方法
- 如果有多个实例,则执行一次方法