gpt4 book ai didi

android - 如何使用 RxJava 逃离这个回调 hell

转载 作者:搜寻专家 更新时间:2023-11-01 08:34:58 25 4
gpt4 key购买 nike

subscriptionSet = provider.removeGeofences(mGeofencePendingIntent).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<Status>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
Log.d(TAG, "onError() called with: " + "e = [" + e + "]");
}

@Override
public void onNext(Status status) {
Prefs.geofence.clear();
subscriptionAdd = statusObservable.observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<Status>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
Log.d(TAG, "onError() called with: " + "e = [" + e + "]");
}

@Override
public void onNext(Status status) {
Prefs.geofence.set(...);
}
});
}
});

我正在尝试使用很棒的 Android-ReactiveLocation为地理围栏实现类似于“设置”的操作 - 例如,如果已经存在,则清除它,然后将其设置到所需位置,以便始终有一个地理围栏。

嗯,我也在尝试学习 RxJava,所以我听说 RxJava 可以解决回调 hell 问题,那么它如何解决我的问题呢?

谢谢!

最佳答案

当你想使用连续订阅时,你应该使用flatMap操作符。这样你的问题就可以简化为:

subscription = provider.removeGeofences(mGeofencePendingIntent)
.flatMap(new Func1<Status, Observable<Status>>() {
@Override
public Observable<Status> call(Status status) {
//after the first subscription
Prefs.geofence.clear();
return statusObservable;
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<Status>() {
@Override
public void call(Status status) {
//after the second subscription
Prefs.geofence.set(...);
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
Log.d(TAG, "onError() called with: " + "e = [" + e + "]");
}
});

关于android - 如何使用 RxJava 逃离这个回调 hell ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com