📌 Kotlin Coroutines의 completeWith
함수 이해하기
1. 개요
completeWith
함수는 CompletableDeferred
인스턴스를 주어진 Result
로 완료하는 데 사용됩니다. 이 함수를 통해 성공적인 결과나 예외를 포함한 결과로 작업을 완료할 수 있습니다.
2. 함수 시그니처
fun CompletableDeferred.completeWith(result: Result): Boolean
3. 주요 기능
- 완료: 주어진
Result
객체에 포함된 값이나 예외로CompletableDeferred
를 완료합니다. - 반환 값: 이 호출로 인해
CompletableDeferred
가 완료되었다면true
를 반환하고, 이미 완료된 경우에는false
를 반환합니다. - 재호출 무효: 이 함수를 여러 번 호출하더라도 첫 번째 호출 이후에는 항상
false
를 반환하며, 추가적인 효과는 없습니다.
4. 사용 예시
completeWith
함수를 사용하여 CompletableDeferred
를 완료하는 예시입니다:
import kotlinx.coroutines.*
import kotlin.Result
fun main() = runBlocking {
val deferred = CompletableDeferred()
launch {
try {
// 일부 비동기 작업 수행
delay(1000L)
val result = Result.success(42)
deferred.completeWith(result)
} catch (e: Exception) {
val result = Result.failure(e)
deferred.completeWith(result)
}
}
println("결과: ${deferred.await()}")
}
위 예시에서, CompletableDeferred
는 1초 후에 값 42
로 완료됩니다. 만약 작업 중 예외가 발생하면 해당 예외로 완료됩니다.
5. 주의사항
completeWith
함수를 호출하여CompletableDeferred
를 완료한 후에는 해당 인스턴스는 불변 상태가 되며, 추가적인 완료 시도는 효과가 없습니다.- 이 함수는
CompletableDeferred.complete
및CompletableDeferred.completeExceptionally
함수와 동일한 방식으로 상태 전이를 처리합니다.
📌 원본 출처
본 문서의 내용은 Kotlin 공식 문서를 참고하여 작성되었습니다. 자세한 내용은 아래 공식 문서를 통해 확인할 수 있습니다.
'Kotlin > kotlinx.coroutines' 카테고리의 다른 글
CopyableThreadContextElement (0) | 2025.02.07 |
---|---|
CompletionHandler (0) | 2025.02.07 |
CompletableJob (0) | 2025.02.07 |
CompletableDeferred (0) | 2025.02.07 |
CloseableCoroutineDispatcher (0) | 2025.02.07 |