让我们使用这个类作为例子:
public static class CurrentUser{
public static Observable<User> get(){
//code basically returns the currently logged in User object
//but sometimes there may not be a logged in user
}
public static Observable<PutResult> logOut(){
return get()
//I only want to execute the following if user != null
.flatMap(new Func1<User, Observable<PutResult>>() {
@Override
public Observable<PutResult> call(User user) {
//delete the session token and save
user.removeSessionToken();
return DatabaseModule.getStorIOSQLite()
.put()
.object(user)
.prepare()
.asRxObservable();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我应该在flatmap中返回null吗?这是否有任何影响,因为它期待一个Observable?
knu*_*ker 21
你不应该回来null,Observable.empty()而是.
.flatMap(new Func1<User, Observable<PutResult>>() {
@Override
public Observable<PutResult> call(User user) {
if (user == null) return Observable.empty();
//delete the session token and save
user.removeSessionToken();
return DatabaseModule.getStorIOSQLite()
.put()
.object(user)
.prepare()
.asRxObservable();
}
});
Run Code Online (Sandbox Code Playgroud)
目前尚不清楚null你在谈论什么.
如果你问是否Observable<PutResult>可以发出PutResult那个null,那么是的.这将导致null外部可观察者发射.
如果你问的是Observable<PutResult>返回的是否Func1为null,那么不.返回Observable.empty(),(或者Observable.just(null)如果您需要跟踪发射物品的数量,则返回相似).