Правильный способ связать несколько вызовов методов реактивным, т.е. без блокировки.
Вот аналогичный вопрос.
Цепные вызовы методов с использованием RxJava
/**
* Delete a user, including VerificationToken and PasswordResetToken if exist.
*
* @param user The user to delete.
* @return A void Mono.
*/
@Override
public Mono<Void> deleteUser(final User user) {
return tokenRepository.findByUser(user) //May return empty
.flatMap((VerificationToken t) -> {
return tokenRepository.delete(t); //Token exists, delete
})
.then(passwordTokenRepository.findByUser(user) //May return empty
.flatMap((PasswordResetToken t) -> {
return passwordTokenRepository.delete(t); //Token exists, delete
}))
.then(userRepository.delete(user)); //Must execute regardless
}
У меня есть несколько вызовов методов для трех разных ReactiveCrudRepositoriesгде первые два вызова являются просто проверками существующих токенов и могут вернуться с пустым моно, если один не найден. Все методы должны завершиться, но удаление пользователя всегда должно происходить независимо от того, найдет ли токен один из первых двух вызовов.
Есть ли лучший способ сделать это или это правильно?