如何在显示整个 UI 时开始计算
How to start computation when entire UI is shown
考虑最简单的情况 - 显示进度条,开始计算,关闭进度条。
有了这样的 html 片段:
<p id="hello" style="display:none">HELLO WORLD</p>
令我惊讶的是,这不起作用:
function foo()
{
var hello = $('#hello');
hello.html(new Date().getTime());
hello.show();
setTimeout(function(){
var big = 0;
for (var i=0;i<10000000;++i)
if (Math.sqrt(i)>Math.cos(i)) // just to keep CPU busy
big = i;
console.log(i);
},0);
}
$(window).load(function ()
{
foo();
});
使用 jQuery promise
也无济于事:
hello.show().promise().done(function(){...
在这两种情况下,元素都会在控制台中输出的同时显示(直观)。
我直观地写了,因为在内部可以报告元素已经显示,但用户看到的内容很重要。
您可以将用于计算的代码放在单独的javascript函数中,即使它的线性它也不会等待计算在javascript中完成并立即移动到下一行。我在隐藏进度条之前等待了一段时间,因为您需要让它至少可用一秒钟。
function startComputing(){
var big = 0;
for (var i=0;i<10000000;++i)
if (Math.sqrt(i)>Math.cos(i)) // just to keep CPU busy
big = i;
console.log(i);
}
function foo()
{
var hello = $('#hello');
hello.html(new Date().getTime());
hello.show();
setTimeout(function(){startComputing();},500);
setTimeout(function(){hello.hide()},1000);
}
相关文章:
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery UI自动完成突然停止工作
- 如何使用skip参数使用angular ui引导进行服务器端分页
- AngularJS UI路由器不能像ng路由器那样工作
- 我可以更改剑道UI网格吗's的外键值
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- 停止jQuery UI滑块移动超过给定值
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- Jquery UI自动完成无法工作
- 语义ui如何使用javascript启用或禁用下拉列表
- jquery ui滑块上的滑块值
- 角度 UI 类型提前开始
- 如何在显示整个 UI 时开始计算
- 从头开始创建 JQuery UI 小部件
- jQuery UI:开始前可拖动
- JQuery UI按钮开始错误行为
- 开始使用React和Material Ui
- 如何使用jQuery ui datepicker计算从今天开始的天数?
- 剑道UI网格总是从第0页开始