2012-02-23 14 views
1

前段時間我問this question有關如何執行批量更新時推遲更新的ko.observableArray,答案是更新包裝的數組,然後觸發了valueHasMutated呼叫更新。推遲依賴使用knockoutjs加載數據時,標版

是否有推遲更新ko.observable()的等效方法?我發現在更新一堆數據時花費了很多時間來更新和重新更新依賴關係。有批量更新的好方法嗎?

基因

回答

7

一對夫婦在這方面的想法:

  • 有一個插件,使相關的更新更高效:https://github.com/mbest/knockout-deferred-updates。作者Michael Best現在參與了KO項目,並一直在幫助我們進行一些性能改進。這個插件最終可能會以某種形式進入KO內核。你應該試試這個插件,看看你的應用程序如何執行它,因爲它會給我們更多的證據表明需要進行這些類型的更改。

  • 另一種方法類似於我後來寫了一些東西here。基本上,您的ko.computed屬性對可以打開和關閉的觀察值具有額外的依賴關係。當它開啓時,ko.computed將執行實際評估(這可能會創建很多依賴關係)。當它關閉時,它會返回最近的結果並刪除標誌以外的所有依賴項。當你重新開啓它時,它會再次被重新評估。在更新過程中,您可以暫停,直到更新完成。

+0

謝謝!將很快檢查出兩種可能性並報告。 – 2012-02-23 23:02:32

+0

通過使用延遲更新插件刪除不必要的排序和其他計算,我能夠看到處理時間減少了約10倍,但有些內容在文檔中有點不清楚。我遇到的一個問題是弄清楚如何將'processImmediate'應用於我的綁定使用的'ko.computed'變量。 – 2012-02-24 01:13:10

+0

隨意發佈有關插件的問題/問題。我知道邁克爾肯定在尋找反饋意見,並很樂意幫助你理清你的情況。 – 2012-02-24 01:25:26