gpt4 book ai didi

android - 如何检查 Observable 是否为空或返回 bool 值

转载 作者:太空狗 更新时间:2023-10-29 16:33:20 25 4
gpt4 key购买 nike

假设我已经观察到调用 rest api 服务然后将结果存储在数据库中:

public Observable<Boolean> initDB() {
return this.restApi.feedsEntityList()
.flatMap(feedEntityList -> this.mNewsCache.saveFeeds(feedEntityList));
}

save Observable 执行数据库保存,成功时应返回 true,错误时应返回 false:

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();
}

在最后一次观察中,我不确定我是否做对了。即,如果数据库保存操作成功完成,则返回 true。否则返回 false!

还有,我应该返回 feedEntity is null 吗?

这样对吗?我应该如何检查 observable 是否返回 true、false 或空的 Observable?

最佳答案

and how should i check if observable returns true, false [...]

当您订阅 Observable<Boolean> 时发出 true 或 false,onNext(Boolean)将以 true 或 false 的值调用。

例如:

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默认情况下 - 它根本不会发出任何东西。

关于android - 如何检查 Observable 是否为空或返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34401678/

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