[英]RxJava, execute observable only if first was empty
僅當具有相同電子郵件的用戶不存在時,我才想將新用戶插入到我的數據庫中。
因此,我有兩個Observable:第一個使用特定電子郵件發出用戶或完成而不發出任何內容。 第二個Observable插入一個新用戶並返回這個新創建的用戶的Object。
我的問題是,我不希望第一個Observable(如果存在)所傳遞的用戶被傳輸到訂閱服務器。 相反,我想將它映射到null)。
Observable<UserViewModel> observable =
checkAndReturnExistingUserObservable
.map(existingUser -> null)
.firstOrDefault(
insertAndReturnNewUserObservable
.map(insertedUser -> mMapper.map(insertedUser)
)
這是我嘗試的最后一件事,但它在第二個地圖操作員處說“循環推理”。
總結一下。 我想只在第一個完成空的情況下執行第二個Observable,但如果不是我不想首先返回數據,而不想返回null。
任何幫助都非常感謝。
switchIfEmpty
操作有switchIfEmpty
運算符:
checkAndReturnExistingUserObservable
.switchIfEmpty(insertAndReturnNewUserObservable)
編輯
如果您不需要現有用戶,則會有一個基於flatMap的答案,它將第一個檢查轉換為布爾值,並根據其值進行調度:
checkAndReturnExistingUserObservable
.map(v -> true).firstOrDefault(false)
.flatMap(exists -> exists ? Observable.empty() : insertAndReturnNewUserObservable);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.