javascript - js操作dom是异步的吗?
阿神
阿神 2017-04-11 10:56:32
[JavaScript讨论组]

场景:我上传图片到服务器,上传的时候显示一个上传进度,这个上传进度是随机出来的,如果上传成功后,就弹出一个alert,提示上传成功。
但是问题是每次都是进度条还没有显示完就会显示alert,我想是不是js操作dom是异步的,有没有什么办法使得js执行一步一步来呢??

阿神
阿神

闭关修行中......

全部回复(4)
高洛峰

原始的xhr对象可以绑定回调,来获得百分比。

xhr.upload.addEventListener("progress", function(evt){
    if (evt.lengthComputable) {
        var percentComplete = Math.round(evt.loaded * 100 / evt.total);
    }
}, false);

jq的话,使用beforeSend属性获取原始xhr对象。

进度条的显示和隐藏跟普通的对话框逻辑一样,都是$.ajax之前显示,ajax的successfail中把它隐藏。

PHP中文网

另外提醒一下,如果开发时候前端与后端是在一台机器上,就是说你用localhost来做上传测试,进度条有可能出现瞬间走到头的情况,即使你设置了上传限速,如果怎么看代码都没问题,可以尝试远程测试

伊谢尔伦

DOM操作是同步的。你的进度条应该是使用了js来操作动效吧?这个过程可能是异步的。

PHP中文网

操作 DOM 不是异步的,但是你的进度条是异步的。

你应该绑定进度条的 complete/close/hidden/... 事件(如果有的话)。

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

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