본문 바로가기

Kotlin/kotlinx.coroutines

completeWith

📌 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.completeCompletableDeferred.completeExceptionally 함수와 동일한 방식으로 상태 전이를 처리합니다.

📌 원본 출처

본 문서의 내용은 Kotlin 공식 문서를 참고하여 작성되었습니다. 자세한 내용은 아래 공식 문서를 통해 확인할 수 있습니다.

🔗 Kotlin Coroutines 공식 문서 - completeWith

'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