Continuation Interceptor
Версия Kotlin: 1.3
interface ContinuationInterceptor : CoroutineContext.Element
Помечает элемент контекста корутины, который перехватывает продолжения корутин. Инфраструктура корутин использует ContinuationInterceptor.Key для получения перехватчика и перехватывает все продолжения корутин с помощью вызовов interceptContinuation.
ContinuationInterceptor ведёт себя как полиморфный элемент, то есть его реализация делегирует вызовы get и minusKey соответственно методам getPolymorphicElement и minusPolymorphicKey. Подтипы ContinuationInterceptor можно извлечь из контекста корутины с помощью ContinuationInterceptor.Key или ключа подтипа, если он расширяет AbstractCoroutineContextKey.
Типы
Версия Kotlin: 1.3
object Key : CoroutineContext.Key<ContinuationInterceptor>
Ключ, определяющий перехватчик контекста.
Свойства
Версия Kotlin: 1.3
abstract val key: CoroutineContext.Key<*>
Ключ этого элемента контекста корутины.
Функции
Версия Kotlin: 1.3
open override fun <R> fold(initial: R, operation: (R, CoroutineContext.Element) -> R): R
Накапливает элементы этого контекста, начиная со начального значения и применяя операцию слева направо к текущему значению аккумулятора и каждому элементу этого контекста.
Версия Kotlin: 1.3
open operator override fun <E : CoroutineContext.Element> get(key: CoroutineContext.Key<E>): E?
Возвращает элемент с указанным ключом из этого контекста или null.
Версия Kotlin: 1.3
fun <E : CoroutineContext.Element> CoroutineContext.Element.getPolymorphicElement(key: CoroutineContext.Key<E>): E?
Возвращает текущий элемент, если он полиморфным образом связан с указанным ключом, или null в противном случае. Этот метод возвращает ненулевое значение, если Element.key равен указанному ключу или если ключ связан с Element.key через AbstractCoroutineContextKey. Пример использования см. в документации AbstractCoroutineContextKey.
Версия Kotlin: 1.3
abstract fun <T> interceptContinuation(continuation: Continuation<T>): Continuation<T>
Возвращает продолжение, оборачивающее исходное продолжение и тем самым перехватывающее все возобновления. Эта функция вызывается инфраструктурой корутин при необходимости, а полученные продолжения кэшируются внутри для каждого экземпляра исходного продолжения.
Версия Kotlin: 1.3
open override fun minusKey(key: CoroutineContext.Key<*>): CoroutineContext
Возвращает контекст, содержащий элементы этого контекста, но без элемента с указанным ключом.
Версия Kotlin: 1.3
fun CoroutineContext.Element.minusPolymorphicKey(key: CoroutineContext.Key<*>): CoroutineContext
Возвращает пустой контекст корутины, если элемент полиморфным образом связан с указанным ключом, или this в противном случае. Этот метод возвращает пустой контекст, если Element.key равен указанному ключу или если ключ связан с Element.key через AbstractCoroutineContextKey. Пример использования см. в документации AbstractCoroutineContextKey.
Версия Kotlin: 1.3
open operator fun plus(context: CoroutineContext): CoroutineContext
Возвращает контекст, содержащий элементы этого контекста и элементы другого контекста. Элементы этого контекста с теми же ключами, что и в другом контексте, отбрасываются.
Версия Kotlin: 1.3
open fun releaseInterceptedContinuation(continuation: Continuation<*>)
Вызывается для экземпляра продолжения, возвращённого методом interceptContinuation, когда исходное продолжение завершается и больше не будет использоваться. Эта функция вызывается только в том случае, если interceptContinuation вернул экземпляр продолжения, отличный от переданного ему.
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.coroutines/-continuation-interceptor/index.html