簡體   English   中英

RxJava,只有在第一個為空時才執行observable

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM