Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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_Html - Fatal编程技术网

Javascript <;部门>;在睡眠方法之前不显示

Javascript <;部门>;在睡眠方法之前不显示,javascript,html,Javascript,Html,我有一个 <div id="myModal" class="modal"> <div class="modal-content"> <span class="close">&times;</span> <font size="6"> <p>Message Text</p>

我有一个

   <div id="myModal" class="modal">
        <div class="modal-content">
            <span class="close">&times;</span>
                <font size="6">
                    <p>Message Text</p>
                </font>
        </div>
    </div>
我从stackoverflow的某个地方获取的睡眠功能

function sleep(delay) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
}
功能睡眠(延迟){
var start=new Date().getTime();
while(new Date().getTime()

这里我想要的是,当我单击按钮时,div显示,然后等待3秒,然后它保留代码,因为它会发布数据,然后返回到同一页,因为我在这里得到的是睡眠3秒,显示div,然后它几乎会立即刷新我的页面,这样就没有时间看到预期的消息。

您正在阻止浏览器线程3秒钟,因此在完成之前它无法绘制更新

简单的规则是:永远不要阻止浏览器线程

任何时候你发现自己有这样的事情:

doSomething();
wait3Seconds();
doSomethingElse();
你真正想要的是:


也就是说,将代码安排在3秒钟后运行,而不是试图在3秒钟内阻止所有内容。阻塞是不好的。

您正在阻塞浏览器线程3秒钟,因此在完成之前它无法绘制更新

简单的规则是:永远不要阻止浏览器线程

任何时候你发现自己有这样的事情:

doSomething();
wait3Seconds();
doSomethingElse();
你真正想要的是:


也就是说,将代码安排在3秒钟后运行,而不是试图在3秒钟内阻止所有内容。阻塞不好。

应该使用setTimeout完成

$("#ButtonID").click(function()
{
     setTimeout(function() {
       if (validate stuff) {//code here}
       else {modal.style.display = "block";}
     }, 3000);
});

应该使用setTimeout来完成

$("#ButtonID").click(function()
{
     setTimeout(function() {
       if (validate stuff) {//code here}
       else {modal.style.display = "block";}
     }, 3000);
});

您正在阻止浏览器线程3秒钟,因此在完成之前它无法绘制更新。不要像那样阻塞浏览器线程。如果希望某件事情在3秒后发生,请使用
setTimeout()
将其安排在3秒后发生。永远不要阻止线程。@David嗯,我想要的是在显示块后等待3秒钟,我已经找了几个小时了,有什么建议吗?你正在阻止浏览器线程3秒钟,所以在完成之前它无法绘制更新。不要像那样阻塞浏览器线程。如果希望某件事情在3秒后发生,请使用
setTimeout()
将其安排在3秒后发生。永远不要阻塞线程。@David嗯,我想在显示阻塞后等待3秒钟,我已经找了几个小时了,有什么建议吗?