如何阻止javascript等待X秒

时间:2014-05-26 14:51:33

标签: javascript

更新

它可能与Sleep in Javascript - delay between actions类似 但事实并非如此。在这个问题中,它只是一个简单的代码,它不嵌套在每个循环中,不需要阻止其代码的执行。 但在我的情况下,我甚至需要阻止每个循环,直到“else”块被执行,然后返回到每个循环。


这是我的代码:

function drawNoisesRadars(noises, radars) {

    var noisesInATime = [];
    var timeIndicator = noises[0].get('NoiseTime').trim();

    $.each(noises, function (index, value) {

        if (!value) {
            return true;
        }

        var noiseTime = value.get('NoiseTime');
        if (noiseTime == timeIndicator) {
            noisesInATime.push(noises[index]);
        }
        else {
            //----------------------------------------------
            // wait for a second to draw the next one.
            window.setTimeout(function () {
                drawTimeSpecificNoisesRelatedRadars(noisesInATime, radars, timeIndicator);

                // clear noisesInATime once drawing is finished.
                clearArray(noisesInATime);

                timeIndicator = value.get('NoiseTime');

                noisesInATime.push(value);

            }, 1000 + index * 1000);
            //----------------------------------------------

        }

    });

}

在else块中,我希望有1秒钟来执行“else”块。但是如果我使用setTimeout()那么它会创建异步块,这意味着下一次迭代中的“if”块在“else”块被执行之前执行。

更新: 我不希望我的“else”块代码异步的原因是因为我需要timeIndicator在“drawTimeSpecificNoisesRelatedRadars()”的范围内保持相同,但由于setTimeout()使得块异步,问题来了 - > 在drawTimeSpecificNoisesRelatedRadars()完成之前更改timeIndicator的值。

我想阻止X秒的“else”代码的原因是: 如果我不阻止它,飞行飞机的动画将看起来像闪电 - >首先在一个地方显示,然后立即显示在目的地,而不显示“之间”。

很抱歉,解释我的代码情况真的很难。

我想要的只是一种方法,我可以简单地使用它:

..........
       else {

                drawTimeSpecificNoisesRelatedRadars(noisesInATime, radars, timeIndicator);

                // clear noisesInATime once drawing is finished.
                clearArray(noisesInATime);

                //Need to be put inside a callback method as well.
                //Reset the timeIndicator
                timeIndicator = value.get('NoiseTime');

                noisesInATime.push(value);
                waitXSecond(X); // Synchronous method, it blocks the whole thread for X seconds.

        }

waitXSecond(X); // Synchronous method, it blocks the whole thread for X seconds.

可以实现吗?

谢谢。

0 个答案:

没有答案