У меня есть сценарий, в котором у меня есть Future[Something]
: a
, который в случае успеха должен вызвать секунду Future[Unit]
: b
.Я хочу соединить a
и b
вместе, но меня волнует только то, что a
будет успешным.если b
терпит неудачу, я могу просто зарегистрировать ошибку и оставить ее так:
Пока у меня есть:
def updateSomething(something: Something): Future[Something] = {
val eventual: Future[Something] = repository.update(something)
eventual.onSuccess({
case updated =>
repository.audit(updated.id, "Update successful")
.onFailure({
case throwable: Throwable => Logger.error("Audit failed", throwable)
})
Logger.info("Update Complete")
})
eventual
}
Но это не связывает жизненные циклы update
иaudit
вместе.например, когда я Await.result(service.updateSomething(...), duration)
не гарантирую, что будущее repository.audit
завершено.