javascript - 怎么理解js的这个看起来同步,但是却是异步的demo
黄舟
黄舟 2017-04-10 14:52:49
[JavaScript讨论组]

http://jsfiddle.net/hidoos/SNBYV/259/embedded

html<style>
    #box {
        width: 100px;
        height: 100px;
        background-color: blue;
    }
</style>
<p id="box"></p>
jsvar box = document.getElementById('box');
box.style.backgroundColor = 'red';

var start = new Date;
while (new Date - start < 3000) {
    // wait 3 second...
};

box的初始颜色是blue,我以为按照顺序执行的话,不用等待3s就能直接修改box的颜色为red,而实际的情况则是要等待了3s才修改box的颜色。不是很明白为什么会这样。

为什么不直接执行dom操作,非要等while执行这个3s,才去执行dom操作呢?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(2)
PHP中文网

while循环 3秒内busy wait,使浏览器一直在执行js从而阻止了浏览器渲染

ringa_lee
var start = new Date;
while (new Date - start < 3000) {
    // 打开页面后,3秒都在做这里面的东西了
};

其实一打开页面,box 的 backgroundColor 已经变为red 了;
只是那段JS 影响了页面的渲染;
你把 while 那段代码去了,就知道了;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号