我有麻烦了。我有一个大型视图模型,其中有大量订阅者订阅我的 observableArrays。当 observables 发生变化时,我想在每次通知订阅者之间刷新 UI,以便 UI 仍然负责,而敲除仍在计算订阅者。
有没有办法做到这一点?
谢谢!
我有麻烦了。我有一个大型视图模型,其中有大量订阅者订阅我的 observableArrays。当 observables 发生变化时,我想在每次通知订阅者之间刷新 UI,以便 UI 仍然负责,而敲除仍在计算订阅者。
有没有办法做到这一点?
谢谢!
要使 UI 响应更快,请使用“节流”扩展器。这样,多个更改被重新评估为单个 UI 更改。
要使 UI 不冻结,您需要中断 JavaScript 进程。这样用户界面就可以更新了。这样做的方法是,在您的订阅者中而不是立即进行处理延迟它:
model.value.subscribe(function(newValue){
setTimeout(function(){
doWork(newValue);
}, 0);
});
如果您doWork
进行了许多不可避免地会冻结 UI 的计算。为了避免 UI 冻结,您需要编写代码,以便在切片中完成计算,以便更新 UI。JavaScript 调度程序将允许在间隔之间进行 UI 更新。例如,如果您正在处理数组,则以chunks的形式处理项目。