我正在处理Observables,对此代码有2个问题: -基本上,我正在尝试获取对象MovieDetail,但是在使用subscription()方法之后无法执行此操作。这是我的代码:
public MovieDetail getMovieDetail() {
Observable<MovieDetail> movieDetail = movieDetailService.observe(); // Call method (1)
movieDetail.subscribe();
First question:
// What I need to return here is an object MovieDetail
// movieDetail is an Observable<MovieDetail>
// So I'd need something like: movieDetail.someMethod() to return an object MovieDetail, but not sure which one I must use
Second question:
// Is it correct to call movieDetail.subscribe(); here or it should be called inside Method (1), something like this:
movieDetailServiceClientRetrofit
.getMovieDetails("550")
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map(movie -> movie.getDetails()) // Return MovieDetail
.toObservable()
.subscribe();
}
// Method (1)
public Observable<MovieDetail> observe() {
return movieDetailServiceClientRetrofit
.getMovieDetails("550")
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.computation())
.map(movie -> movie.getDetails()) // Return MovieDetail
.toObservable() // Return Observable<MovieDetail>
}
答案 0 :(得分:0)
您可能会在计时的概念上苦苦挣扎,例如“何时可以提供电影详细信息?” Observable<MovieDetail>
是一种承诺,最终可能会发出MovieDetail
对象。
如果您需要同步对象,则必须等待对象被发射。有几种方法可以做到这一点,包括使用first()
运算符变体。这些运算符将阻塞,等待对象被发射,然后返回发射的值。
强制执行步骤同步可能会花费您,但您可能愿意为此付出代价。同步数据处理的反应性要少得多。