我有乘法函數,如count()
getTotal()
。如果我的cart/object
發生了某些變化,所有這些計算功能都必須運行。 目前我在{{count()}}
之類的視圖中使用它們。因此,所有這些功能都運行乘法時間。 我認爲這些函數被稱爲乘法時間,因爲髒檢查。它是否正確?從運行乘法時間的角度避免函數表達式
現在我讀了關於$watch
函數,你應該儘量避免它,因爲性能問題。無論如何,我想測試它,並$watched
我的cart
。我發現它只記錄一個單個時間所以不會更快到$watch
我的cart
並調用所有計算函數在那裏,然後只是綁定到計算的結果?
我有點困惑知道,因爲我認爲它會有相同的行爲。因爲$watch
也將通過摘要循環。
我知道現在已經有很多類似的問題,但有人直接爲我的案例解釋它並不是很難,因爲它會讓問題變得簡單。
例如: 什麼有更好的表現?爲什麼?兩種變體是否都經歷了摘要循環?爲什麼然後Variant 2記錄10次而Variant 1只記錄1次?
變1個
// bind these to scope and show like {{totalGross}}
cartService.totalGross = null;
cartService.totalNet = null;
cartService.totalItems = null;
// watch the cart here and update all variables
$rootScope.$watch(function() {
return cartService.cart;
}, function(){
cartService.totalGross = cartService.getCartTotalGross();
cartService.totalNet = cartService.getCartTotalNet();
cartService.totalItems = cartService.getTotalItems();
}, true);
變2
// bind these to scope and show like {{getCartTotalGross()}}
cartService.getCartTotalGross();
cartService.getCartTotalNet();
cartService.getTotalItems();
試圖回答我的問題,如果altough這是正確的我不是舒爾。
變1你有1個更多的守望者,但我們只是看值,而不是功能和更1,因爲我們與$watch
手動看車。但是觀察者計算起來不那麼沉重。
變體2我們正在觀察函數返回的值,所以函數必須計算相同的值乘以倍數,女巫更重。在每個摘要循環中UI得到更新
這是正確的嗎?所以變種1對性能更好?
請,張貼[MCVE(http://stackoverflow.com/help/mcve)的你想達到的目標。目前尚不清楚你的'案件'究竟是什麼。 – estus
如果您提出具體問題,這將有所幫助。 –
@estus更新,讓你也許更多地瞭解我想問的問題。 – user2834172