从Ember Data访问XMLHttpRequest

时间:2017-05-23 13:52:39

标签: ember.js internet-explorer-11

我正在 Ember 2.3.0 开发一个Web应用程序,在进行一些跨浏览器测试时,显然 IE 11 的应用程序运行缓慢。 在IE开发人员的控制台上进行一些测量似乎 DOM onreadystatechange 事件会在一段时间内占用高达100%的CPU,这可能是泄漏。

我发现这篇文章:http://milan.adamovsky.com/2012/02/javascript-memory-leaks-in-internet.html尽管已经老了,但我还是鼓励我测试将 onreadystatechange 事件归零的做法,以防它发生内存泄漏。

var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function () {
  if (ajax.readyState === 4) {
    // code on completion

    ajax.onreadystatechange = CollectGarbage;
    ajax = null;
  }
};

但在Ember我不知道如何直接访问XMLHttpRequest对象。 JSONApiAdapter提供了一个重写的ajax方法,但我不知道如何访问原始对象:

const Adapter = DS.JSONAPIAdapter.extend({
  ajax: function(){ ... }
})

1 个答案:

答案 0 :(得分:0)

实际上,故意不容易找到原始XHR对象(参见https://github.com/emberjs/data/pull/4406)。在某些时候,Ember Data可能会切换到使用fetch而不是XHR,并且他们喜欢轻松进行切换的能力。

如果您怀疑有泄漏,可以尝试https://github.com/ember-best-practices/memory-leak-examples的一些建议。他们非常有用