在页面加载的时候,javascript通常会从服务器去获取一些数据,拿到数据后再渲染页面。如果用同步请求一个一个去拿这些数据,加载会很慢。但如果使用异步请求,后面的渲染操作会在数据返回之前就把页面给渲染了。
google了一下好像木有合适的解决办法, 于是我尝试用一个死循环挡在渲染页面之前,拿到数据后再跳出死循环。类似于这样的:
overview.showLoading();
instances.get_cluster(true);
users.get_users(true);
databases.get_databases(true);
for(;;) {
if(ctrl.cluster && ctrl.databases && ctrl.users) {
break;
}
setTimeout('', 500);
}
instances.show();
databases.show();
users.show();
overview.show();
overview.hideLoading();
get_cluster, get_databases, get_users会发起异步请求,请求成功后会把数据写到ctrl中去。看起来不错,可是执行起来浏览器会建议用户杀掉script,因为发现了死循环。木有办法,稍微变通一下,只能让死循环活半个小时,如果加载页面需要半个小时的话,你的网站可以歇菜了。于是改成下面的代码:
overview.showLoading();
instances.get_cluster(true);
users.get_users(true);
databases.get_databases(true);
for(var i =0; i < 3600; i++) {
if(ctrl.cluster && ctrl.databases && ctrl.users) {
break;
}
setTimeout('', 500);
}
instances.show();
databases.show();
users.show();
overview.show();
overview.hideLoading();
世界安静了,同步时不停转的loading也很快就消失了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有