[팁] 터치이벤트가 여러번 발생할수 있음에 주의!

티타늄에서는 btn.addEventListener(‘click’, listener) 와 같은 형식으로 이벤트리스너를 등록하여 터치 이벤트를 처리하는데,
버튼을 여러번 누르게되면 이벤트 queue에 쌓여서 listener가 착실하게 여러번 호출이 된다.
어찌보면 당연한 이야기인데 이걸로 인해 처리에 시간이 걸리는 네트워크 작업의 경우 ‘보내기’ 버튼이 여러번 호출되어 똑같은 글이 여러번 올라가는 현상이 발생할 수 있다.

이걸 해결하기 위해 간단하게 boolean 변수를 만들어 listener안에서 처리중일때 true로 바꾸고 이미 true이면 처리를 하지 읺게끔 하였다.
멀티스레드 환경이라면 thread lock을 해야겠지만 자바스크립트는 싱글 스레드로 동작하기 때문에 저렇게 처리를 하면 될 듯하다.

FacebookTwitterGoogle+