我有一個大型 JSON,我通過<script>標簽將其加載到我的應用程式中。包含 JSON 的 JS 檔案大約為 280k。這是一個標準的 JS 定義:
var _countries = {"country:{"USA":{...},"GBR":{ ...},"FRA":( ...}, etc, etc ...}}} ;
它在應用程式啟動時加載到記憶體中,然后我想將它復制到一個新$rootScope變數,而不僅僅是對原始物件的參考,然后在完全復制后我想洗掉原始_countries物件。
$rootScope._countries= angular.copy(_countries) ;
_countries = null ;
但是,在完全洗掉原始物件之前,如何判斷物件何時被完全復制_countries?JS 是異步的,我不想冒險$rootScope._countries在 null 消除原始物件之前沒有完整的物件。
另外,有沒有比使用更好的方法來復制原始物件angular.copy()?
uj5u.com熱心網友回復:
TLDR;
- 如果這真的只是一個簡單的 json 賦值,則無需擔心等待。
- 您也不必擔心洗掉 JS 中的變數以節省記憶體。
異步
像這樣的簡單資料變數賦值將始終同步執行:
const foo = {...superBig} // definitely already just JSON
如果您在變數賦值中讀取 JSON ,例如...
var _countries = funcToLoadJSON('path-to-my-json')
...這可能是一個不同的故事,具體取決于實作細節,因為有些方法可以同步讀取,有些方法可以異步讀取。請參閱示例。
節省記憶體
您不能真正洗掉 Javascript 中的任何物件。JS 引擎試圖根據幕后的一些因素找出進行垃圾收集的“最佳”時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/439881.html
標籤:javascript json angularjs 目的 深拷贝
下一篇:無需回圈即可獲取物件陣列的名稱
