当Massive DOM修改发生时,使用requestAnimationFrame更改DOM的最佳方法是什么?
第三种选择对我来说似乎是最好的,对吗?
第一个选项:
var a = {
key1 : 'value1',
key2 : 'value2',
[...]
};
window.requestAnimationFrame(function() {
if(someConditions) {
$('elem').html(a.key1);
}
if(otherConditions) {
$('elem').html(a.key2);
}
if([...]) {
[...]
}
});
第二个选项:
var a = {
key1 : 'value1',
key2 : 'value2',
[...]
};
if(someConditions) {
window.requestAnimationFrame(function() {
$('elem').html(a.key1);
});
}
if(otherConditions) {
window.requestAnimationFrame(function() {
$('elem').html(a.key2);
});
}
第三种选择:
var a = {
key1 : 'value1',
key2 : 'value2',
[...]
};
var stack = [];
if(someConditions) {
stack.push(a.key1);
}
if(otherConditions) {
stack.push(a.key2);
}
var doTheJob = function() {
var value = stack.shift();
window.requestAnimationFrame(function() {
$('elem').html(value);
if(stack.length) {
doTheJob();
}
});
};
我希望代码说明情况(每次调用$('elem')但如果我添加代码,我将无法发布,因为il看起来主要是代码......)。