无法设法在循环内睡觉

aja*_*221 2 javascript sleep loops delay

我想在1 second每次循环时暂停,在其他情况下通常很容易做类似的暂停,但在使用循环时,似乎变得更难:

for (var i=0 ; i < 10 ; i++) {
    document.write (i + "<br>");
    // I want to wait 1 second here
}
Run Code Online (Sandbox Code Playgroud)

这是我成千上万次尝试失败的一个例子:

function writeMsg (index) {
    document.write (index + "<br>");
}

for (var i=0 ; i < 10 ; i++) {
    setTimeout (writeMsg(i), 1000);
}
Run Code Online (Sandbox Code Playgroud)

有关如何使其工作的任何想法?

sg3*_*g3s 9

这个函数更像是一个普通的for循环,而不是

你需要考虑到一个for在分号之间得到3个参数.

  1. 开始之前(即var i=0你定义一个变量)
  2. 再次运行代码之前的条件(即,i < 10当我小于10时)
  3. 每次再次完成代码时的动作(i++向i添加一个)

(function() {
    // Define a variable
    var i = 0,
        action = function() {
            // Condition to run again
            if (i < 10) {
                document.write(i + "<br>");

                // Add one to i
                i++;
                setTimeout(action, 1000);
            }
        };

    setTimeout(action, 1000);
})();
Run Code Online (Sandbox Code Playgroud)

以下是此代码演示其工作的jsfiddle:http: //jsfiddle.net/sg3s/n9BNQ/