我在 angularjs 中有一个 JS-Data 资源,每次我inject
在(Jasmine)测试中调用它时,测试都会变慢,最多需要 700 毫秒。
我已经ejectAll()
在每次测试后做一个。它也没有做任何$http
请求,所以我没有线索......
任何想法为什么 JS-Data 注入在我的测试中可能如此缓慢?
我在 angularjs 中有一个 JS-Data 资源,每次我inject
在(Jasmine)测试中调用它时,测试都会变慢,最多需要 700 毫秒。
我已经ejectAll()
在每次测试后做一个。它也没有做任何$http
请求,所以我没有线索......
任何想法为什么 JS-Data 注入在我的测试中可能如此缓慢?
找到它:在我的资源定义中,我将UseClass
属性设置为更改实例的模型,用 getter through 替换数组Object.defineProperty
。如此处所述:
每当该资源的商店中的任何项目发生更改时,DS.change 都会在该资源上触发。
getter 导致 JS-Data 认为实例已更改,从而触发了无限摘要循环。在 10 个摘要之后,angular 放弃了,但这需要一些时间,导致测试缓慢。
经验教训:不要使用 getter 属性扩展持久化 DS 模型实例,因为它们会触发无限变化。