Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For循环问题中的JavaScript设置超时_Javascript_For Loop_Settimeout - Fatal编程技术网

For循环问题中的JavaScript设置超时

For循环问题中的JavaScript设置超时,javascript,for-loop,settimeout,Javascript,For Loop,Settimeout,我的问题是,我试图通过迭代值增加超时时间,并将其计时1000。例如,如果增量值为5,则超时时间为5*1000 我尝试过各种方法,第一种是-> var textValue = 10; function doSetTimeout(i) { setTimeout(function() { console.log(i); }, i * 1000); } for(var i = 1; i <= textValue; i++){ doSetTimeout(i); }

我的问题是,我试图通过迭代值增加超时时间,并将其计时1000。例如,如果增量值为5,则超时时间为5*1000

我尝试过各种方法,第一种是->

var textValue = 10;
function doSetTimeout(i) {
   setTimeout(function() { console.log(i); }, i * 1000);
}

for(var i = 1; i <= textValue; i++){
     doSetTimeout(i); 
 }     
var textValue=10;
函数doSetTimeout(i){
setTimeout(函数(){console.log(i);},i*1000);
}
对于(var i=1;i

var textValue=10;

对于(var i=1;i超时实际上是正确的持续时间,它们只是同时开始,因为
setTimeout
不会停止for循环的执行

这应该是您想要的:

var textValue=10;
delayLoop(textValue);
函数delayLoop(到,在){
var at=at | | 1;

如果(在时)超时实际上是正确的持续时间,则它们只是同时开始,因为
setTimeout
不会停止for循环的执行

这应该是您想要的:

var textValue=10;
delayLoop(textValue);
函数delayLoop(到,在){
var at=at | | 1;

如果(在创建了一组
setTimeout
s,在1000ms、2000ms、3000ms等之后触发。问题是您同时创建了它们,因此每个超时都会在下一个超时后1秒出现。有两种方法可解决此问题

  • 最初为每个
    setTimeout
    计算正确的延迟
  • 第一个应为1000ms。第二个应在1000ms+2000ms之后。第三个应在1000+2000+3000之后。等等

    var timeoutSum = 0;
    for (var i = 1000; i <= 10000; i += 1000) {
        timeoutSum += i;
    
        setTimeout(function() { console.log("hi!"); }, timeoutSum);
    }
    
    var timeoutSum=0;
    
    对于(var i=1000;i您创建了一组
    setTimeout
    s,在1000ms、2000ms、3000ms等之后触发。问题是您同时创建了它们,因此每个超时将在下一个超时后1秒出现。有两种方法可解决此问题

  • 最初为每个
    setTimeout
    计算正确的延迟
  • 第一个应为1000ms。第二个应在1000ms+2000ms之后。第三个应在1000+2000+3000之后。等等

    var timeoutSum = 0;
    for (var i = 1000; i <= 10000; i += 1000) {
        timeoutSum += i;
    
        setTimeout(function() { console.log("hi!"); }, timeoutSum);
    }
    
    var timeoutSum=0;
    
    对于(var i=1000;i可能重复的可能重复的So是指从时间0开始,您希望事件在时间1000、3000、6000、10000、15000等处触发?可能重复的So是指从时间0开始,您希望事件在时间1000、3000、6000、10000、15000等处触发?它们是同时启动,但超时值为
    i*1000
    ,所以它们不应该间隔1秒启动吗?它们在同一时间启动,但超时值为
    i*1000
    ,所以它们不应该间隔1秒启动吗?
    var wait = 1000;
    
    function addTimeout(wait) {
        setTimeout(function() {
            console.log('hi'); 
    
            if (wait < 10000) {
                addTimeout(wait + 1000);
            }
        }, wait);
    }
    
    addTimeout(wait);