0

此代码不断重复,但我希望它发生两次,在函数调用之后,然后在使用setTimeout.

function alertit() {
     alert('code');
     setTimeout(alertit, 200);
}

alertit();
4

8 回答 8

3
function alertit(callAgain) {
     alert('code');
     if (callAgain) setTimeout("alertit(false)", 200);
}

alertit(true);
于 2013-07-16T11:56:07.830 回答
2
function alertit() {
     alert('code');
}

alertit();
setTimeout(alertit, 200);

例如。

于 2013-07-16T11:53:15.103 回答
2

你能试试这个

function alertit(){

    // guard code
    if ( alertit.times == 2 ) return ; // for 4 times, alertit.times == 4  
    alertit.times = alertit.times ?  ++alertit.times: 1;

    // your function logic goes here ..   
    alert( 'here function called ' + alertit.times  );

    setTimeout( alertit , 1000 );
}

alertit();
于 2013-07-16T12:07:34.330 回答
1

您可以在此处应用条件逻辑。

    var callfunc = true;
    function alertit() {
         alert('code');
      if(callfunc == true)
         setTimeout(function(){ callfunc = false; alertit();}, 200);
    }

    alertit();
于 2013-07-16T11:56:00.087 回答
1

如果调用setTimeout必须在内部:

function alertit() {
  var f = function () {
    alert('code');
  }
  f();
  setTimeout(f, 200);
}

alertit();
于 2013-07-16T12:17:17.150 回答
1

你可以使用两个标志来实现。count 将确保您的方法运行两次,并且执行标志确保仅在第一次设置超时时。

var execute = true;
var count = 0;

function alertit() {
    if (count < 2) {
        alert('code');
        if (execute) {
            setTimeout(alertit, 200);
            execute = false;
        }
    }

}

alertit();

我看到我给出了一个类似的答案,比如 tangelo,它以简单、简单的步骤做同样的事情。

于 2013-07-16T12:26:24.793 回答
1

如果您对更通用的方法感兴趣,可以设置如下内容:

function callMultipleTimes(func, count, delay) {
    var key = setInterval(function(){
        if (--count <= 0) {
            clearInterval(key);
        }
        func();
    }, delay);
}

function alertit() {
     alert('code');
}

callMultipleTimes(alertit, 2, 200);

小提琴

于 2013-07-16T12:27:57.700 回答
0

创建一个全局变量调用 It _Count = 0 并在函数 alertit() 中执行 if 条件 if ( _Count <> 1 ) 调用该函数,然后如果此代码为真,则增加您的变量并调用该函数...

于 2013-07-16T11:54:56.690 回答