angularjs 在完全复制到新对象后删除原始对象
angluarjs delete original object after full copy to a new object
我有一个很大的 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()
更好的复制原始对象的方法?
TLDR;
- 如果这真的只是一个简单的json作业,您不必担心等待。
- 你也不用担心为了节省内存而在JS中删除变量
异步
像这样简单的数据变量赋值总是同步执行的:
const foo = {...superBig} // definitely already just JSON
如果您正在从JSON 中读取变量赋值,例如...
var _countries = funcToLoadJSON('path-to-my-json')
...这可能是一个不同的故事,具体取决于实现细节,因为有些方法可以同步读取,有些方法可以异步读取。参见 examples。
节省内存
您无法真正删除 Javascript 中的任何对象。 JS 引擎试图根据幕后的一些因素找出进行垃圾收集的“最佳”时间。
我有一个很大的 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()
更好的复制原始对象的方法?
TLDR;
- 如果这真的只是一个简单的json作业,您不必担心等待。
- 你也不用担心为了节省内存而在JS中删除变量
异步
像这样简单的数据变量赋值总是同步执行的:
const foo = {...superBig} // definitely already just JSON
如果您正在从JSON 中读取变量赋值,例如...
var _countries = funcToLoadJSON('path-to-my-json')
...这可能是一个不同的故事,具体取决于实现细节,因为有些方法可以同步读取,有些方法可以异步读取。参见 examples。
节省内存
您无法真正删除 Javascript 中的任何对象。 JS 引擎试图根据幕后的一些因素找出进行垃圾收集的“最佳”时间。