2014-09-16 2 views
0

이 오류에 대한 많은 게시물을 읽었습니다. 그러나 그것은 내 문제를 해결하지 못합니다.오류 # 1023 : 스택 오버플로가 발생했습니다.

function getData() { 
    //doing some stuff here 
    call_socket("data", callback); //When response from socked server has been received, call callback function 
} 
function callback(data:Object) { 
    if(!data) { getData(); } //if data is null, continue loop 
    else { //stop the loop } 
} 

나는이 두 가지 기능에 오류가있어 : 내 경우, 루프는 다음과 같이 두 가지 함수들이 그냥 통해 작업이 있습니다

나는이 오류가 내가 전화 한 것을 알려줍니다 이해
Error #1023: Stack overflow occurred. 

반복적으로 기능하지만 내 경우에는 그게 내가해야할 일이다.

이 문제를 해결할 방법이 있습니까?

+0

콜백 함수의 반환 된 데이터가 정확합니까? – Pan

+0

예, 모든 것이 잘 작동합니다. 나는이 코드를 여러 번 테스트했다. 업데이트 후에 만이 에러를 던졌습니다. – LokoTerrorita

+0

'call_socket' 메소드 코드를 보여줍니다. – BadFeelingAboutThis

답변

0

문제는 코드의 논리에 있습니다. call_socket이 얼마 동안 데이터를 반환하지 않는 상황을 생각해보십시오. 이로 인해 많은 콜백 및 getData 서클이 생성됩니다. 귀하의 응용 프로그램에 따라 당신은 2 가지 방법으로 원하는 결과를 얻을 수 있습니다 : 당신은 데이터 (대신 콜백의) 도착 앱 다른 부분을 알리기 위해 몇 가지 이벤트를 사용해야합니다

  1. 당신은에서 서버를 폴링 할 수 있습니다 정의 된 시간 범위. 타이머를 사용할 수 있습니다.
+0

나는 당신을 이해하지 못했을 것이라고 생각합니다. 소켓이 서버로부터 데이터를 수신하고 응답의 모든 청크를 컴파일하면 콜백 함수가 호출됩니다. 실패하면 루프를 중지하여 루프를 중지합니다. getData()가 소켓 호출 당 한 번 더 호출 될 가능성은 없습니다. 하지만 어쩌면 당신이 옳을 수도 있습니다. 어쩌면 콜백 함수 대신 이벤트를 사용하면 효과가 있습니다. 나는 그것을 테스트 할 것이다 – LokoTerrorita

+0

코드는 콜백 메소드가 데이터 매개 변수로 null을받을 때마다 getData 메소드를 호출 할 것이라고 보여준다. 각 소켓 호출마다 한 번만 발생하는지는 중요하지 않습니다. 문제는 null을 반환 할 때마다 여러 소켓 호출을 수행한다는 것입니다. 그리고 1 초 만에 얼마나 많은 함수 호출을 수행 할 수 있을지 생각해보십시오. 이 때문에 스택 오버플로 오류가 발생합니다. 이전에 일했다고 했잖아요. 귀하의 소켓 호출이 매우 빠른 데이터를 반환 했으므로 운이 좋았다고 생각합니다. – Ingweland

관련 문제