如何在Javascript中以过程化的方式运行一个又一个语句

How to run one statement after another in a procedural manner in Javascript?

本文关键字:方式 运行 一个又一个 语句 过程 Javascript      更新时间:2023-09-26

假设我们有一个简单的场景,我想在1秒后重复输出"Hello",然后输出"World"。我尝试过以下几种:

setInterval(
    function() {
        console.log("Hello");
        setTimeout(
            function() {
                console.log("World");
            },
            1000
        );
    },
    1000 
);

但它不起作用,在setInterval的第二次交互时,console.log同时输出Hello World。

我做错了什么?

外部间隔应为2秒。

这不是你问题的直接答案,但我认为它在你的情况下很有用,

我创建了一个queue runner函数,它需要一段时间后运行的函数列表

功能:

  • 您可以向队列中添加任意数量的函数
  • 您可以设置是运行一次队列还是重复该序列
  • 仅使用setInterval函数而不使用setTimeout

定义:

var queue = function ( /* Array<function> */ fn, /* int */ timeout, /* boolean */ repeat) {
    return function () {
        var i = 0,
            f = fn[i],
            t = setInterval(function () {
                f();
                if (fn[i + 1] !== undefined) {
                    f = fn[++i];
                } else {
                    if (repeat) {
                        i = 0;
                        f = fn[i];
                    } else {
                        clearInterval(t);
                    }
                }
            }, timeout);
    }
}

你这样称呼它:

var fn = [function(){console.log('A')}, function(){console.log('B')}];
queue(fn, 1000, true)();

JSFIDDLE:

你可以查看jsfiddle希望能帮上忙☺