简体   繁体   English

Javascript按条件循环添加延迟

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM