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 引擎试图根据幕后的一些因素找出进行垃圾收集的“最佳”时间。