Изучение

Асинхронное разрешение

Предсказуемое разрешение асинхронных зависимостей и одна совместно ожидаемая инициализация Lazy Singleton.

v1.1.0Продвинутый уровеньark_di

Асинхронное разрешение

get<T>() работает предсказуемо: он не блокирует выполнение и не возвращает Future. Синхронный запрос асинхронной регистрации завершается DiAsyncResolutionRequiredException; для неё предназначен getAsync<T>().

Async Factory начинает новую операцию для каждого запроса. Async Lazy Singleton объединяет параллельные запросы в одну выполняющуюся инициализацию и сохраняет только успешный результат.

text
caller A ─┐
caller B ─┼─→ один Future инициализации → один Singleton
caller C ─┘

После ошибки неуспешная попытка очищается, и следующий запрос может повторить инициализацию. Resolver Factory позволяет зафиксировать зависимости для диагностики циклов и планирования teardown.