2012-02-24 2 views
0

HttpProxy를 확장하고 24 개 상점을 미리로드합니다. 로드 할 24 번째 저장소를 추가 한 후에 오류가 발생합니다. 요청시에만로드하려고 시도했으며 laod가 호출 될 때 오류가 발생합니다. ExtJS 전문가가 도와주세요! 나는 ExtJS에 2.3 extension.js에서ExtJS 2.3 - 잡히지 RangeError : 최대 호출 스택 크기가 초과되었습니다.

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 

내 작은 확장자 코드를 사용하고 있습니다 :

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); 
      } 

     } 
    } 
}); 

답변

0

당신의 loadexception예외 핸들러는 else 블록 . So if somehow data.errorCode에서 같은 예외을 던지고을 is not 1 ' 재귀 적으로 반복해서 호출 할 것입니다. 따라서 호출 스택 크기가 오류를 초과합니다.

솔루션 : 당신은 할 수있는, 그것을 방지하기 위해 다음과 같은

  1. 을 차단 확실 변경할 수 있도록 loadexception를 해고하거나하지 않도록 응답을 처리하는 경우 다른 사람에 loadexception을 발사하지 마십시오
  2. data.errorCode != 1
  3. 모든 것을 처리하는 다른 예외를 통해.
+0

Shiplu! 어떤 이유로 나는 그 사건의 전파가 끝날 것이라고 생각했고, 다시 사건을 처리 할 것이기 때문에 그 사건을 다시 해고 할 필요가있었습니다. 고맙습니다! – user979051

관련 문제