Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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
Javascript设置超时链接_Javascript_Jquery_Settimeout_Chaining - Fatal编程技术网

Javascript设置超时链接

Javascript设置超时链接,javascript,jquery,settimeout,chaining,Javascript,Jquery,Settimeout,Chaining,这可能是一个简单的问题,但我似乎无法在函数中嵌入变量参数以供将来执行。“警报”是我想要延迟执行的函数,参数为0、1、2等 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script language="JavaScript"> var init = function init() { for (var i = 0

这可能是一个简单的问题,但我似乎无法在函数中嵌入变量参数以供将来执行。“警报”是我想要延迟执行的函数,参数为0、1、2等

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
  <script language="JavaScript">
    var init = function init() {
      for (var i = 0, max = 3; i < max; i++) {
        var then;
        then = (function(jj) {
          return jj;
        }(i));
        var pp = function(jj) {
          return alert(then);
        };

        setTimeout(function() {
         pp();
        }, then * 1000);
      }

    };
  </script>
</head>

<body onload="init();">
  <button onclick="init();"></button>

</body>

</html>        

var init=函数init(){
对于(变量i=0,max=3;i
您实际上并没有问任何问题,所以我假设任何产生您期望的结果的实现都是您想要的

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
  <script language="JavaScript">
    function createfunc(i) {
        return function() { alert(i); };
    }

    var init = function init() {
        for (var i = 0, max = 3; i < max; i++) {
            var func = createfunc(i);
            setTimeout(func, i * 1000);
        }
    };

  </script>
</head>

<body onload="init();">
  <button onclick="init();"></button>

</body>

</html>

函数createfunc(i){
返回函数(){alert(i);};
}
var init=函数init(){
对于(变量i=0,max=3;i
这将通知一个号码,然后等待一秒钟并通知另一个号码。在达到3之前:

var init = function() {
    var counter = 0, //Start
        max = 3 //End

    var count = function() {
        alert(counter) //Alert

        if ( counter < max ) { //If we havent reached 3 then queue this function to be called again
            window.setTimeout(function() {
                count()
            }, 1000)
        }

        counter++
    }

    count() //Start the counter
}
var init=function(){
变量计数器=0,//开始
最大值=3//结束
变量计数=函数(){
警报(计数器)//警报
如果(counter

这里有一个小问题:

您将第一个函数包含在闭包中,而不是第二个函数,因此您基本上将
pp
var设置为第一次调用
setTimeout
之前的最后一次迭代。使用
then
变量的目的是什么?如果要交错调用,每个调用都有自己的值,则可能需要将对
setTimeout
本身的调用放在自己的闭包中:

 var init = function init() {
    for (var i = 0, max = 3; i < max; i++) {
        (function (jj) {
            setTimeout(function() {
                alert(jj);
            }, jj * 1000);
        })(i);
    }
};
var init=函数init(){
对于(变量i=0,max=3;i
这是一个复杂的卷积代码,我敢肯定,如果我们理解了您真正想做的事情,就会有更少的卷积方法。代码有什么问题(除了混乱)?警报中的值是否错误?