2014-12-11 5 views
0

관찰자 (예 : "o")는 관찰자가 구독 취소 한 후 일부 상태를 정리해야합니다. the docs에 따르면 "o"위에 구축 된 다른 관찰자의 구독을 취소하면 "o"로 다시 캐스케이드해야합니다.구독 취소가 RxJava에서 기본 관찰 가능으로 복귀하지 않습니다.

이 동작은 일부 예제에서만 작동하는 것 같습니다. 다음 코드에서는 "정리"메시지가 세 번 인쇄되지만 마지막 사례 (o1.throttleLast (...))에서는 그렇지 않습니다.

def o = rx.Observable.create({ subscriber -> 
     subscriber.add(Subscriptions.create({ println "cleanup" })) 
    }) 

    o.subscribe({}) 
     .unsubscribe() // prints 

    o.take(1) 
     .subscribe({}) 
     .unsubscribe(); // prints 

    o.throttleLast(1, TimeUnit.MILLISECONDS) 
     .subscribe({}) 
     .unsubscribe() // doesn't print 

아이디어가 있으십니까? 감사.

+2

'throttleLast'의 버그입니다. https://github.com/ReactiveX/RxJava/issues/1958에서 문제를 만들었으며 수정 요청을 보냈습니다. – zsxwing

답변

1

throttleLast의 버그가 RxJava 1.0.3에서 수정되었습니다.

+0

와우, 정말 대단 했어! 지연 돼서 죄송합니다. 티켓을 열고 솔루션에 대한 작업을 해줘서 고맙습니다. RxJava의 버그 일 수는 없습니다. – juanedi