0

我有麻烦了。我有一个大型视图模型,其中有大量订阅者订阅我的 observableArrays。当 observables 发生变化时,我想在每次通知订阅者之间刷新 UI,以便 UI 仍然负责,而敲除仍在计算订阅者。

有没有办法做到这一点?

谢谢!

4

1 回答 1

2

要使 UI 响应更快,请使用“节流”扩展器。这样,多个更改被重新评估为单个 UI 更改。

要使 UI 不冻结,您需要中断 JavaScript 进程。这样用户界面就可以更新了。这样做的方法是,在您的订阅者中而不是立即进行处理延迟它:

model.value.subscribe(function(newValue){
   setTimeout(function(){
      doWork(newValue);
   }, 0);
});

如果您doWork进行了许多不可避免地会冻结 UI 的计算。为了避免 UI 冻结,您需要编写代码,以便在切片中完成计算,以便更新 UI。JavaScript 调度程序将允许在间隔之间进行 UI 更新。例如,如果您正在处理数组,则以chunks的形式处理项目。

于 2013-05-29T15:46:54.920 回答