JavaScript无干扰时间延迟

时间:2018-07-26 18:58:35

标签: javascript time delay timedelay

我需要在JavaScript中没有干扰的时间延迟。具体来说,我需要类似的东西:

console.log("A");
someSortOfSleepFunction(3000);
console.log("B");
console.log("C");

三秒钟的睡眠实际上发生在“ A”和“ B”之间,即

A
wait
B
C

如果我使用:

console.log("A");
setTimeout(function(){ console.log("B"); }, 3000);
console.log("C");

我得到的当然是:

A
C
wait
B

我写了一个睡眠函数,即

function mdjSleep(n) {

    var sleepStart;
    var sleepEnd;
    var sleepNow;

    sleepStart = new Date().getTime();
    sleepEnd = sleepStart + n;

    while(true) {
        sleepNow = new Date().getTime();
        if (sleepNow >= sleepEnd) {
            break;
        }
    }
}

但是会干扰,即在我编码时

console.log("A");
mdjSleep(3000);
console.log("B");
console.log("C");

代替

A
wait
B
C

它产生:

wait
A
B
C

有什么建议吗?

0 个答案:

没有答案