-
API Timeout 처리 (with. RxSwift)I'm a Developer/iOS & macOS 2020. 1. 15. 11:18
API Request를 보낼때 일반적으로 Request에 대한 부분은 미리 작성된 공통의 네트워크 코드에 넣어 놓는 경우가 많습니다.
이를테면 URLRequest의 timeoutInterval 속성에 몇 초 뒤에 timeout을 발생시킬 것인지에 대해 정의해 놓게 됩니다.그런데 어떤 경우에는 특정 API 하나에서만 timeout이 더 짧은 시간이 필요한 경우가 있습니다.
이를 위해 공통으로 정의된 timeout 시간을 바꾸는 것은 바람직 하지 않습니다.
이럴 때는 API 콜을 하고 반환되는 observable에 아래의 메소드를 써주면
someObservable .timeout(2.0, scheduler: ConcurrentDispatchQueueScheduler.init(qos: .background)) .catchErrorJustReturn(Person())
위의 예로 봤을 때, 2.0초까지 데이터가 안오면 에러를 뱉어내는데 그 에러를 잡아서 Person()이라는 빈 객체로 전달하여 observable이 종료되지 않도록 유지시켜주게 됩니다.
그러면 timeout되었을 때 특정 API에만 별도의 timeout을 줄 수 있게 됩니다.
'I'm a Developer > iOS & macOS' 카테고리의 다른 글