2012-10-23 88 views
0
  1. 的正在讀/解析JSON對象(如通過<script> DOM節點,例如JSONP),用於(最)瀏覽器的一個同步阻塞操作?伸縮性JSON

  2. 在什麼點是JSON對象太大,在對象上的客戶端操作會望而卻步(例如鎖定了瀏覽器,腳本運行速度太慢,等)?

+0

1)no:你總是調用(ajax方式)json異步加載。 2)只是測試。並且一旦太長時間就使用小負載。 –

回答

1

1)是的,解析JSON是阻塞的。無阻塞操作的符號傳遞一個回調,像這樣:

$.get('/stuff/1', function (data) { 
    // do stuff with `data` 
}); 

而塊操作通常這樣寫的

var stuff = JSON.parse(theData); 

如果JSON.parse是無阻塞的,將是這樣的:

JSON.parse(theData, function (stuff) { 
    // process `stuff` 
}); 

解析JSON是一個非常快速的操作,所以它不需要非阻塞。

2)真的很大。解析JSON,特別是在使用本地JSON.parse方法的瀏覽器中(幾乎所有這些方法)都相當快速。 JSON是一種簡單的格式,因此可以快速解析。

2

是的,解析JSON字符串是一個阻塞操作。 (請注意,如果您從Web服務中使用JSONP,那麼您並不需要將字符串解析爲JS)。

你必須有一個真的大的JSON字符串,這是現代瀏覽器的問題。如果您發現某個操作確實鎖定了瀏覽器,則可以通過Web Worker避免這種情況,這可以使阻止操作在單獨的線程中完成。

+0

也很容易檢查最壞情況的時間 - var t = Date.now(); JSON.parse(test_10MB_json); var delta = Date.now() - t' - 你有你的估計。 (我打賭IE7不會喜歡它,但現代瀏覽器應該沒問題) – c69