안녕하세요! 왈라비🦘 입니다.!

이번에는 API호출에 아주 유용하게 사용될 timeout에 대해서 알아보겠습니다.

<aside> 💡 timeout은 내가 설정한 시간동안 아무런 요소가 방출되지 않으면 그대로 Observable 시퀀스를 종료하도록 만드는 연산자 입니다.

</aside>

가끔 인터넷이 느린 환경에서 무언가를 로딩하려고 했을때 너무 시간이 오래 걸리면 로딩 시간 초과 문구가 뜨는 것을 다들 한 번쯤 경험 해봤을 겁니다. 이런 느낌의 상황을 rx에서 timeout을 이용하면 매우 쉽고 빠르게 구현이 가능합니다.

같이 자세히 알아보도록 하겠습니다!

마블


우선 마블로 timeout을 아래와 같이 표현할 수 있습니다.

timeout.png

보이는 것과 같이 timeout에 인자값으로 정해준 시간동안 아무런 요소가 전달 되지 않자 error를 방출해버린 모습을 확인 할 수 있습니다.

이렇게 error가 방출되어 버리게 되면 아무리 뒤에 4, 5 와 같이 요소가 방출이 된다 하여도 구독자에게 전달이 되지 않게됩니다.

왜냐하면 error가 방출된 Observabledisposed 되어 버리기 때문이죠.