마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android RXJava Observable의 각기 다른 동작이 모두 끝났을때....

0 추천
제목과 마찬가지로
RXJava의 각기 다른 동작이 모두 끝났을때 실행하고 싶은 메서드가 있습니다

그런데 zip 같은 경우는 같은 동작의 Observable만 묶을 수 가 있는것 같아서요ㅠㅠ

혹시 방법론이라도 제시가 가능 할까요??
따깡 (420 포인트) 님이 2022년 2월 18일 질문
zip은 같은 동작만 묶을 수 있다는게 무슨 말씀이신지? Observable을 두개이상 한꺼번에 실행할 수 있는 걸로 아는데요.
여러개의 API(모두 다른 응답) 를 zip 으로 묶어서
subscribe를 하려고 하는데 하나의 subscribe에서 다른 모두 다른 응답들을 어떻게 처리 할까요??
Observable.zip(observableList, "function")
에서 여러 응답에 대한 function 처리를 어떻게 해야할지 잘 모르겠어요ㅠㅠ
observableList에 있는 observable의 타입들이 다르다면, 결과를 처리할 때 포지션에 따라 타입을 체크하셔야 할 것 같은데요.
타입을 체크하신다는 말씀은 예를들어 test1ResponseForm이랑 test2ResponseForm이 있다면

~~.subscribe{ it ->
    if (it is test1ResponseForm) {~~}
    else if ( it is test2ResponseForm) {~~}
}
요런식으로 말씀이신가요??
zip(Iterable<? extends ObservableSource<? extends T>> sources, Function<? super Object[],? extends R> zipper)

zip 의 메소드 형태가 이렇게 되어 있고 코틀린을 사용하시니까, observableList를 고정사이즈로 가정하고.
아래처럼 할 수 있을 것 같은데요.
~~.subscribe{ it ->
     (it[0] as test1ResponseForm).~
     (it[1] as test1ResponseForm).~
}

별다른 이유가 없다면, 타입을 비교하는 것 보다는  바로 타입캐스팅을 하는 것이 더 좋은 접근방법입니다. 타입을 비교하게 되면 잘못 비교할 경우 해당코드를 스킵하지만, 타입캐스팅을 하게되면 에러가 있는 경우 금방 알 수 있죠.
감사합니다ㅠㅠㅠㅠ
큰 도움이 되었어요 진짜 고마워요~!!

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...