[英]Javascript add delay in loop by condition
This is my code 这是我的代码
var count = 1;
for (var key in result.data) {
if (count == 10) {
// I want to delay 1 second here
}
var value = result.data[key];
generate(key, value);
count++;
}
As you see , I iterate throught result.data
, and added count
to determine when to add delay. 如您所见,我遍历
result.data
,并添加了count
以确定何时添加延迟。
I just want to add 1 second delay inside this loop when count == 10
as I shown . 我只想在
count == 10
时在此循环中添加1秒的延迟,如图所示。
You can use async/await to pause for a sec. 您可以使用async / await暂停一秒钟。 Like this.
像这样。
(async () => {
let count = 1;
const array = [1,2,3,4,5,6,7,8,1,2,3,4,5];
for (let key in array) {
if (count === 10) {
await new Promise((resolve) => {
console.log('Paused for 1 sec');
setTimeout(() => {
console.log('Continued');
resolve();
}, 1000);
});
}
console.log(key);
count++;
}
})();
Maybe it helps you: 也许它可以帮助您:
function delay(functionToDelay, ms) {
return function() {
var savedThis = this;
var savedArguments = arguments;
setTimeout(function() {
functionToDelay.apply(savedThis, savedArguments);
}, ms);
};
}
First argument - function you want to delay. 第一个参数-您要延迟的功能。 Second - milliseconds
秒-毫秒
I'm assuming, you want to call the generate
function after 1 second when the count
is 10 我假设,当
count
为10时,您想在1秒后调用generate
函数
You can use setTimeout
like this: 您可以这样使用
setTimeout
:
var result = { data: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] } var count = 1; for (let key in result.data) { if (count == 10) { setTimeout(() => generate(key, result.data[key]), 1000) } else { generate(key, result.data[key]) } count++; } function generate(key, value) { console.log(value); }
What you need is setTimeout() . 您需要的是setTimeout() 。
Your code will be something like this: 您的代码将如下所示:
var count = 1;
for (var key in result.data) {
if (count == 10) {
// I want to delay 1 second here
setTimeout(function(){ alert("1 second delay!"); }, 1000);
}
var value = result.data[key];
generate(key, value);
count++;
}
Below you can find usable example for it. 您可以在下面找到适用的示例。
PS: Edit PS:编辑
for (var key in result.data) {
if (count == 10) {
// I want to delay 1 second here
setTimeout(generate.bind(key, result.data[key]), 1000);
}
else
generate(key, result.data[key])
count++;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.