IE 是个淘气的小东西……不是吗。
在使用 javascript 进行数据绑定时,如果要进行重要的 UI 更新,我会执行以下操作。
function ajaxCallback(listOfDataItems){
var addToUiFunction = function(item){
// add it to the ko.observable array which is data bound to the UI
myDataBoundArray.push(item);
};
for (var i = 0, arrayLength = listOfDataItems.length; i < arrayLength; i++){
var temp = listOfDataItems[i];
//create an immediately executing function to close around
//the item that returns a function to call at a later date.
var tempFunction = (function(){
var item = temp;
return function() { addToUiFunction(item) };
})();
setTimeout(tempFunction, 0);
}
}
这里发生的是我一次只向 UI 添加一个项目。我使用延迟为 0 的 setTimeout 来推迟单个 add 的执行,直到当前调用完成。这意味着非常短的工作单元不会让您的浏览器超时。
ps代码有点狡猾,它只是想说明一点。