다음 시나리오에 적합한 RxJava 연산자는 무엇입니까?이 작업을 수행하는 데 올바른 RxJava 연산자는 무엇입니까?
토큰이 저장되어 있는지 확인하고 네트워크에서 가져 오지 않고 다른 네트워크 요청을 수행 할 수 있는지 확인하고 싶습니다.
나는 and/then/when
또는 filter
과 flatMap
의 조합으로 처리해야한다고 생각하지만 확실하지 않습니다.
다음 시나리오에 적합한 RxJava 연산자는 무엇입니까?이 작업을 수행하는 데 올바른 RxJava 연산자는 무엇입니까?
토큰이 저장되어 있는지 확인하고 네트워크에서 가져 오지 않고 다른 네트워크 요청을 수행 할 수 있는지 확인하고 싶습니다.
나는 and/then/when
또는 filter
과 flatMap
의 조합으로 처리해야한다고 생각하지만 확실하지 않습니다.
해결 방법에는 여러 가지가 있습니다. 하나 더 일반적인 해결책은 Observable.concat
일 것입니다.
// Our sources (left as an exercise for the reader)
Observable<Data> memory = ...;
Observable<Data> disk = ...;
Observable<Data> network = ...;
// Retrieve the first source with data
Observable<Data> source = Observable
.concat(memory, disk, network)
.first();
사례에 대해 두 가지 관찰 자료가 필요합니다. 로컬 저장소에 토큰이있는 경우 concat
은 관찰 할 수있는 네트워크에 가입하지 않습니다. 블로그 게시물에서 더 많은 정보.
코드 샘플 this blog post.
이 찾고 있지만,이 cache` 네트워크의 캐싱 도움이 될 관측 가능한 요청 수 '있다는
Observable.just(getToken())
.filter(token->Strings.isNullOrEmpty(token))
.map(this::findNewToken)
.cache()
.subscribe(token -> println("Your new Token")
참고도 아주 간단해야한다 구조화 기쁘지 어떤 경우 나도 몰라 예. –