0
내가 간단한 슬라이드 응용 프로그램에서 AS3-신호-V0.9-BETA를 사용하고와 1023 스택 오버 플로우. 내 신호 처리기에서 일부 조건을 기반으로 동일한 신호를 다시 보냅니다.오류 AS3-신호-V0.9-BETA
애플리케이션은 메소드를 전달 신호에 두 시간 후에 예외를 던진다. 다음은 스택 추적은 다음과 같습니다
는오류 :
는Error #1023: Stack overflow occurred.
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:\cb-trunk\Solutions\Components\Slidelib\src\com\chetansachdev\components\SlideDeck.as:75]
at org.osflash.signals::Slot/execute()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\Slot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\OnceSignal.as:125]
at com.chetansachdev.components::SlideDeck/onNextSlidePleaseEvent()[D:\cb-trunk\Solutions\Components\Slidelib\src\com\chetansachdev\components\SlideDeck.as:89]
at org.osflash.signals::Slot/execute()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\Slot.as:87]
at org.osflash.signals::OnceSignal/dispatch()[C:\Users\Robert\Documents\Flash\OSFlash\signals\as3-signals\src\org\osflash\signals\OnceSignal.as:125]
...
...
방법 :
mysignal.add(mySignalHandler);
function mySignalHandler():void
{
if(condition)
{
// do something here..
}
else
{
mysignal.dispatch();
}
}
어떤 사람은 잘못, 어떤 날 지점 수 있습니다. 시그널 핸들러에서 디스패치 할 때 스택이 생성되고 있습니까? (나는 직접 메서드를 호출하지 않고, 신호를 보내고있다.)
답장을 보내 주시면 핸들러에서 메서드를 직접 호출하지 않습니다. 이벤트/신호를 파견 중이므로 무한 루프라고 생각하지 않습니다. 메소드 끝나기 전에 trace 문을두면 실행됩니다. –
그런 다음 상황을 더 잘 나타내려면 질문에서 코드를 업데이트해야합니다. 현재와 마찬가지로, 동일한 메소드를 재귀 적으로 호출하는 것과 같습니다. 신호에는 자동 비동기 지연이 없습니다. – Creynders
의미가 있습니다. 다른 메서드를 호출하고 모든 신호를 제거하고 리스너를 한 번만 추가하려고했습니다. 몇 시간이 지난 후에도 예외가 발생합니다. 나는 다른 방법으로 그것을 구현할 것이고, 같은 방법을 다시 호출 할 필요가 없다. 답변 주셔서 감사합니다 :) –