如何检查 Observable 是否为空或 returns 布尔值
how to check if Observable is empty or returns Boolean value
假设我观察到调用 rest api 服务然后将结果存储在数据库中:
public Observable<Boolean> initDB() {
return this.restApi.feedsEntityList()
.flatMap(feedEntityList -> this.mNewsCache.saveFeeds(feedEntityList));
}
save Observable 执行数据库保存并且应该 return 在成功的情况下为真或在发生错误的情况下为假:
public Observable<Boolean> saveFeeds(List<FeedEntity> feedEntity) {
if (feedEntity != null) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
try {
Log.d("DB: ", "saving Feed to DB");
for (FeedEntity feeds : feedEntity) {
feeds.save();
}
subscriber.onNext(true);
subscriber.onCompleted();
} catch (Exception exception) {
subscriber.onError(exception);
}
}
});
} else return Observable.empty();
}
在最后一次观察中,我不确定我是否做对了。即 return 如果数据库保存操作成功完成则为真。 return否则为假!
另外,我应该 return feedEntity 为空吗?
对吗?我应该如何检查 Observable return 是真、假还是空 Observable?
and how should i check if observable returns true, false [...]
当您订阅发出 true 或 false 的 Observable<Boolean>
时,将使用值 true 或 false 调用 onNext(Boolean)
。
例如:
saveFeed(feeds).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean result) {
// result will be either true or false.
}
});
how should i check if observable returns [...] empty Observable
As per the documentation, Observable.empty()
什么都不发出, 然后完成。您的 onNext()
永远不会被调用,但 onComplete()
会被调用。
如果你真的想要,你可以监控是否onNext()
被调用,如果你onNext()
没有被调用但是onComplete()
是的,你知道它从来没有发射过任何东西。不过,这可能并不是您真正想要的。
in this last observable, i am not sure if i am doing it correctly. i.e. return true if database saving operation is done successfully. return false otherwise!
你不是。
你永远不会调用 subscriber.onNext(false)
,所以你的 Observable 永远不会发出 false
。默认情况下,Observable<Boolean>
不会发出 false
- 它根本不会发出任何东西。
假设我观察到调用 rest api 服务然后将结果存储在数据库中:
public Observable<Boolean> initDB() {
return this.restApi.feedsEntityList()
.flatMap(feedEntityList -> this.mNewsCache.saveFeeds(feedEntityList));
}
save Observable 执行数据库保存并且应该 return 在成功的情况下为真或在发生错误的情况下为假:
public Observable<Boolean> saveFeeds(List<FeedEntity> feedEntity) {
if (feedEntity != null) {
return Observable.create(new Observable.OnSubscribe<Boolean>() {
@Override
public void call(Subscriber<? super Boolean> subscriber) {
try {
Log.d("DB: ", "saving Feed to DB");
for (FeedEntity feeds : feedEntity) {
feeds.save();
}
subscriber.onNext(true);
subscriber.onCompleted();
} catch (Exception exception) {
subscriber.onError(exception);
}
}
});
} else return Observable.empty();
}
在最后一次观察中,我不确定我是否做对了。即 return 如果数据库保存操作成功完成则为真。 return否则为假!
另外,我应该 return feedEntity 为空吗?
对吗?我应该如何检查 Observable return 是真、假还是空 Observable?
and how should i check if observable returns true, false [...]
当您订阅发出 true 或 false 的 Observable<Boolean>
时,将使用值 true 或 false 调用 onNext(Boolean)
。
例如:
saveFeed(feeds).subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean result) {
// result will be either true or false.
}
});
how should i check if observable returns [...] empty Observable
As per the documentation, Observable.empty()
什么都不发出, 然后完成。您的 onNext()
永远不会被调用,但 onComplete()
会被调用。
如果你真的想要,你可以监控是否onNext()
被调用,如果你onNext()
没有被调用但是onComplete()
是的,你知道它从来没有发射过任何东西。不过,这可能并不是您真正想要的。
in this last observable, i am not sure if i am doing it correctly. i.e. return true if database saving operation is done successfully. return false otherwise!
你不是。
你永远不会调用 subscriber.onNext(false)
,所以你的 Observable 永远不会发出 false
。默认情况下,Observable<Boolean>
不会发出 false
- 它根本不会发出任何东西。