我有以下問題:Breezejs,瀏覽器凍結而經理assemples對象
- 微風獲取元數據(23.4KB)
- 微風獲取查找(4.5MB)右後查找
下載後,瀏覽器將在30秒內無響應。在此之後,一切都像魅力一樣。
爲什麼微風不使用超時通知用戶界面?
Firefox抱怨長文字操作,無反應等。任務管理器(顯示Firefox/Chrome /等)沒有響應。
我做錯了什麼,或者這是設計?
如果這是通過設計,我可以使用'Web Worker'來完成所有沉重的操作,然後返回整個模型或其他東西?
我有以下問題:Breezejs,瀏覽器凍結而經理assemples對象
下載後,瀏覽器將在30秒內無響應。在此之後,一切都像魅力一樣。
爲什麼微風不使用超時通知用戶界面?
Firefox抱怨長文字操作,無反應等。任務管理器(顯示Firefox/Chrome /等)沒有響應。
我做錯了什麼,或者這是設計?
如果這是通過設計,我可以使用'Web Worker'來完成所有沉重的操作,然後返回整個模型或其他東西?
我想是這樣的:
var test = function (name) {
return Q.fcall(function() {
setTimeout(function() {
toastr.success(name); // Notify me
return EntityQuery.from(name)
.using(manager).execute()
}, 1000) // This should be zero
});
};
var primeData = function (name) {
return test('Languages')
.then(test('dummy1'))
.then(test('dummy2'))
.then(test('dummy3'))
.then(test('dummy4'))
};
然而通知似乎坡平了,所有在同一時間,這表明
return EntityQuery.from(name)
.using(manager).execute()
不返回時,實體構建適應和支持完成,但是當這個實體的JSON數據到達了。
EDIT 回答與webWorker這裏提供:BreezeJs with dedicated web worker
我想我明白你的觀點。 Breeze在處理那些成千上萬個到達的實體時處理UI線程。如果微風能夠以某種方式意識到它做了多少工作,並且會這樣做,那麼它可能會在那裏拋出暫停,讓UI有機會呼吸。
我不確定這將是多麼安全,因爲微風將不得不選擇一個時刻,不會從某人的角度使緩存處於不穩定狀態。
我相信你可以通過將一個巨大的Lookups調用分成幾個更小的對象來簡化你自己。如果這對您的應用程序至關重要,您仍然可以異步地等待所有較小的查找承諾的完成。事實上,他們是獨立的承諾回調應該給你你所尋求的救濟。
請試試看,並告訴我們它是如何工作的。
P.S .:你也有一個很酷的機會在這裏選擇性地緩存這些查找本地存儲(indexdb),所以你不必每次都下載它們。當然,你需要一個版本控制方案和一些管道工程,所以一旦事情看起來不錯,這就是你的未來。
「微風讀取查找(4.5MB)」 聽起來查找的一個瘋狂量。我猜想你正在查找超過100k條記錄,然後Breeze必須映射這些查找的所有相關屬性。你有沒有想過要把它減少到只需要什麼? –
當然,認爲這是我需要的。 這就像一個Web應用程序的管理工具。 我不希望速度更快,因爲數據綁定尚未初始化,所以我預計它會有所響應 – user2731973
http://windyroad.com.au/2007/03/30/web-apps-the-new-單線程gui/ 即使有一個簡單的setTimeout是IS響應 – user2731973