求大神解答,js为什么没法暂停线程?快来看看这里代码错在哪?

放荡不羁笑点高 2017-09-30 11:33:04
<div id="prompt1"style="width: 500px;height: 500px;display:none;background-color: #00A1CB">
<p>顶顶顶</p>
</div>

<script>
$(function () {
document.getElementById("prompt1").style.display="block"; //第一行
pauseTime(2000); //第二行
document.getElementById("prompt1").style.display="none";
});
//自己写的暂停毫秒数的函数
function pauseTime(millTime) {
var start=Date.now();
while(true){
var nowTime=Date.now();
var offset=nowTime-start;
if(offset>=millTime)
break;
}
}
</script>


代码就这么简单,如果在第一行代码那里打了断点的话会正常执行,但是不打断点就什么都不显示也不报错,有大神知道这是为什么吗?
...全文
373 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
x80819091 2017-10-01
  • 打赏
  • 举报
回复
可以暂停线程,比如没有code的时候。。否则都是会执行的,异步或同步
当作看不见 2017-09-30
  • 打赏
  • 举报
回复

document.getElementById("prompt1").style.display="block"; //第一行
    setTimeout(function(){
document.getElementById("prompt1").style.display="none";
},2000)                                                 //第二行
天际的海浪 2017-09-30
  • 打赏
  • 举报
回复
js就是不能暂停线程的。你用while()只是增加线程执行的时间,并不是暂停线程。 这样平白耗费cpu不说,在一个线程执行的时间内,浏览器不会重新渲染html页面的显示,也不能响应用户对页面的操作。 js的执行线程与浏览器的页面渲染线程是互斥的,只有js的执行线程结束,浏览器的页面才能重新渲染。 你可以先让js线程结束,再用setTimeout()重新开一个新的线程。
Go 旅城通票 2017-09-30
  • 打赏
  • 举报
回复
似梦飞花 2017-09-30
  • 打赏
  • 举报
回复

function pauseTime(millTime) {
        var start=Date.now();
        while(true){
            var nowTime=Date.now();
            var offset=nowTime-start;
            if(offset>=millTime)
                break;
        }
    }
    console.log(Date.now());
    pauseTime(2000);
    console.log(Date.now());
正常啊

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧