javascript - 循环内 sleep /延迟/超时

标签 javascript loops timeout delay sleep

我的 JavaScript 代码需要延迟,但如果我在代码中创建超时函数,就会遇到问题。但是,如果我取出超时代码,它就可以正常工作。我搜索了这里关于超时/延迟的其他帖子,但我认为我的情况有点不同。

var myArray = new Array('Book One', 'Book Two', 'Book Three', 'Book Four');

x = myArray.length - 1;

(function myLoop(x) {

    page = 3;

    (function myLoop2(page) {
        //setTimeout(function () {   

        var name = myArray[x];

        alert(name + ' Page: ' + page);

        if (--page) myLoop2(page);
        //}, 1000 )
    })(page);

    if (x != 0) myLoop(--x);
})(x);

如果我删除代码中的注释,它将给出不同的输出。

最佳答案

不幸的是,JavaScript 中没有 sleep 或等待函数。 超时不会暂停程序执行。相反,它会安排该函数在稍后的某个时间点执行,并继续执行,就好像此时什么也没有发生一样。

因此,如果没有超时,代码将作为正常的嵌套循环运行。

超时后,内部循环变为“调度一次,触发时调度下一个”。所以外循环会调度每本书的所有第一页。 一秒钟后,第一页被触发,这将安排第二页。 再过一秒,第二个页面就会被触发,依此类推。

关于javascript - 循环内 sleep /延迟/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598210/

相关文章:

javascript - addEventListener ('keydown' ) JavaScript 错误?

java - 使用 dbpedia 作为终点向 jena(对于 sparql)添加超时?

java - "org.omg.CORBA.BAD_OPERATION: Cannot extract ulonglong"与 JacORB 客户端超时策略

javascript - 展开/折叠div时无法第二次调用jquery truncate插件

php - 在线游戏,或比 ajax 更快的发送/接收数据的东西

java - 在 Java 中通过循环创建乘法表

php - 通过PHP在其他div之后插入div

Azure 计划任务在 30 秒后超时

javascript - 如何在 Electron 中获取日期格式 - javascript

Java:在两个ArrayList中查找匹配对象值的最有效方法?