Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Middle — Senior
7
Контролируемый асинхронный запуск последовательных UseCase‑операций
Компании, где спрашивали:
Salmon
Условие задачи
Необходимо построить механизм выполнения набора задач, соблюдая следующую последовательность:
- Сначала запускается FirstUseCase и выполнение останавливается, пока он не завершится успешно.
- После подтверждения успеха FirstUseCase параллельно стартуют SecondUseCase и ThirdUseCase.
- Все остальные действия могут выполняться одновременно без ожидания.
- Результаты (успех/ошибка) обрабатываются через методы .onSuccess и .onFailure.
internal class TaskDelegate @Inject constructor(
private val firstUseCase: UseCaseOne,
private val repository: Storage,
private val secondUseCase: UseCaseTwo,
private val thirdUseCase: UseCaseThree,
private val dataProcessor: DataManager,
) {
fun executeTasks() {
firstUseCase(UseCaseOne.Params())
.onSuccess { repository.updateData() }
dataProcessor.processData()
secondUseCase(UseCaseTwo.Params(timeoutDuration))
.onSuccess { repository.updateData() }
thirdUseCase(Unit)
.onSuccess {
// something
}
.onFailure {
// something
}
}
}