2

「Hello」に続いて「World」を 1 秒後に繰り返し出力したい単純なシナリオがあるとします。私は次のことを試しました:

setInterval(
    function() {
        console.log("Hello");

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

setIntervalしかし、console.log出力 Hello Worldの 2 番目のインタレーションで同時に機能しません。

私は何を間違えましたか?

4

2 に答える 2

0

これはあなたの質問に対する直接的な回答ではありませんが、あなたの状況で役立つと思います。

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をチェックすることができます この助けを願っています☺</p>

于 2013-08-11T15:11:23.337 に答える