javascript thread
javascript thread
本文关键字:thread javascript 更新时间:2023-09-26
http://jsfiddle.net/andersb79/SNTb3/1/
在此示例中,当您单击运行时。div 在获得 1000 个问候后被动画化。如果我在开始时注释 for 循环并在另一个 for 循环中注释,则动画会在追加运行之前开始。
但是动画运行不流畅。你能以某种方式做到这一点吗,或者在javascript中是不可能的。
我希望它在动画的同时加载divDocument。我并不是说它应该是实时添加的,但我不希望它弄乱动画,我不想通过在动画开始之前添加 1000 条记录来浪费时间。
希望你能理解我的意思。
如果您要一次性添加 10000 个元素,它将阻止任何其他活动,直到完成。
如果你开始动画,然后执行添加,它会很生涩,因为系统有一小段时间忙于添加div,然后突然意识到它在动画上落后了,它必须赶上。 请注意,动画不会与元素的添加交错。
解决此问题的最佳方法是批量添加元素,每次使用 setTimeout
触发下一批。
批处理使后台线程有时间运行任何其他事件,例如动画处理程序。
有关使用批处理的工作演示,请参阅 http://jsfiddle.net/alnitak/yETt3/。 该示例的核心是:
var n = 0,
batch = 100;
function nextBatch() {
for (var i = 0; i < batch && n < 10000; ++i, ++n) {
$("#divDocument").append("<div>hello</div>");
}
if (n < 10000) {
setTimeout(nextBatch, 0);
}
}
setTimeout(nextBatch, 0);
一次添加 100 个元素,setTimeout
调用允许事件处理线程跳入并处理动画和其他 UI 事件。
例如,
您可以使用 setTimeout
$(document).ready(function () {
$(".openWindow").click(function () {
setTimeout(function() {
var divToShow = $("#divDocument");
var windowWidth = $(window).width();
var leftOut = (windowWidth * -1);
var leftIn = windowWidth + 500;
divToShow.css({ left: leftIn });
divToShow.show();
divToShow.animate({ left: 0 }, 400, function () {
divToShow.addClass("visibleDiv");
});
}, 2000);
for (var i = 0; i < 10000; i++) {
$("#divDocument").append("<div>hello</div>");
}
});
});
如果要在添加该元素后运行动画,则必须为追加元素创建函数,并在此函数结束时调用动画。如果你想以异步方式运行它,你必须使用 setTimeout(func, 0) 进行动画和元素添加。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 如何使用WCF服务和javascript表单post上传.doc文件
- javascript结合了数组和字典
- 这是什么 ==- javascript 运算符
- 从javascript创建一个列表
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Javascript:selenium Web驱动程序isDisplayed()不工作
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在Javascript中将JSon对象转换为数组
- Javascript生成的表单未提交
- javascript thread
- Javascript 'thread join' library?