2014-09-18 2 views
0

Compte tenu de l'interface simple:Rénovation, Observable et le code sans fin

public interface Api { 
    @Get("/{id}") 
    Observable<Person> getPerson(@Path("id") String id); 
} 

et un appel comme:

api.getPerson("me").toBlocking().single(); 

tout fonctionne comme prévu, sauf ma demande ne se termine pas. Peu importe que je m'abonne à l'Observable et que je me désinscrive une fois terminé plutôt que de bloquer, mon code ne se terminera pas. Pour être clair, ce n'est pas une application Android.

Où est-ce que je me trompe?

Répondre

1

Je vais aller pour la défense "c'est en retard".

J'ai simplement changé l'appel pour vous inscrire sur le planificateur io et observer le programmateur immédiat comme ceci:

api.getPerson("me").subscribeOn(Schedulers.io()).observeOn(Schedulers.immediate()).toBlocking().single(); 

Simples.