Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中停止几秒钟_Javascript_Pause - Fatal编程技术网

在javascript中停止几秒钟

在javascript中停止几秒钟,javascript,pause,Javascript,Pause,我的代码: <!DOCTYPE html> <html> <body> <button id="start" onClick="myFunction()">Start</button> <div id="output"></div> <script> function myFunction() { for(i=3; i>0; i--) { console.log(i);

我的代码:

<!DOCTYPE html>
<html>
<body>
<button id="start" onClick="myFunction()">Start</button>
<div id="output"></div>
<script>
function myFunction() {
    for(i=3; i>0; i--) {
        console.log(i);
        document.getElementById('output').innerHTML = i;
        pause(5000);
    }
}

function pause(milliseconds) {
    var dt = new Date();
    while ((new Date()) - dt <= milliseconds) { /* Do nothing */ }
}
</script>
</body>
</html>

开始
函数myFunction(){
对于(i=3;i>0;i--){
控制台日志(i);
document.getElementById('output').innerHTML=i;
暂停(5000);
}
}
函数暂停(毫秒){
var dt=新日期();

而((新日期())-dt函数无法工作的原因基本上是,直到所有操作都运行一秒钟后,才会处理和显示DOM更改。使其工作的最简单方法可能是调用
setTimeout
,它会等待特定的时间,然后调用提供的函数。例如,您可以使用following函数使代码正常工作

此函数通过
setTimeout
调用递归地调用自身,以确保DOM已禁用

函数myFunction(i){
(函数doStuff(){
控制台日志(i);
document.getElementById('output').innerHTML=i;
i-=1;
如果(i>=0){
设置超时(doStuff,5000);
}
}());
}
myFunction(3);

柜台:X

(通过谷歌搜索“在javascript中暂停几秒钟”,你会发现很多答案!)你实际上是在阻止整个过程,甚至是浏览器重新绘制。无限的阻止循环几乎从来都不是暂停执行的有效方式。