ExtJS 2.3 - 未捕获RangeError:超出最大调用堆栈大小

时间:2012-02-24 00:41:10

标签: javascript extjs

我正在扩展HttpProxy并预加载24个商店。在我添加要加载的第24个存储之后发生错误,我已经尝试仅在请求时加载它并且在调用laod时发生错误。 ExtJS专家请帮忙!我正在使用ExtJS 2.3

Uncaught RangeError: Maximum call stack size exceeded
Ext.override.listeners.loadexception extensions.js:12
Ext.util.Event.fire ext-all-debug.js:1521
Ext.util.Observable.fireEvent

我在extension.js中的小扩展代码:

Ext.override(Ext.data.HttpProxy,{
    listeners: {
        'loadexception' : function(proxy, options, response){
            var data = eval("(" + response.responseText + ")");
            if (data.errorCode == "1") { //session expired or auth error
                location.reload(true);
            } else {
                this.fireEvent("loadexception",proxy,options,response);
            }

        }
    }
});

1 个答案:

答案 0 :(得分:0)

您的loadexception 异常处理程序在else. So if somehow data.errorCode is not 1中抛出相同的异常,它将以递归方式调用它一次又一次。因此调用堆栈大小超过错误。

解决方案:您可以执行以下操作来阻止它,

  1. 请勿在else块
  2. 中触发loadexception
  3. 如果您解雇loadexception,请确保更改或处理回复,以使其无法data.errorCode != 1
  4. 通过处理一切的其他异常。