2013-05-29 56 views
0

我陷入困境。我有一個龐大的視圖模型,有大量的用戶可觀察陣列。當可觀察性發生變化時,我想刷新每次通知給訂閱者之間的UI,以便UI仍然負責,而敲除仍在計算訂閱者。淘汰用戶界面,而淘汰賽仍在更新用戶

有什麼辦法可以做到這一點?

謝謝!

回答

2

要使UI更具響應性,請使用the "throttle" extender。通過這種方式,多個更改將重新評估爲單個UI更改。

對於UI不凍結,您需要中斷JavaScript過程。所以UI可以更新。該辦法做到這一點,在你的用戶,而不是立即做處理延遲它:

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

如果您doWork做了很多的計算,將不可避免地凍結UI。爲了避免UI凍結,您需要編寫代碼,以便在切片中完成計算,以便可以更新UI。 JavaScript調度程序將允許間隔之間的UI更新。例如,如果您正在處理數組,處理chunks中的項目。

+0

是的,但這樣你唯一能做的就是延遲計算變量的計算。 UI在執行時仍然凍結。 – user949050

+0

我感到你的痛苦。看到我更新的答案。 –