⏸️ suspend 함수
📖 suspend란?
suspend 함수는 코루틴을 일시 중단할 수 있는 특별한 함수입니다. 쓰레드를 블록하지 않고 기다릴 수 있어서 효율적입니다!
💡 기본 개념
suspend 키워드
// suspend 함수는 다른 suspend 함수를 호출 가능
suspend fun doSomething() {
delay(1000) // suspend 함수
println("완료!")
}
fun main() = runBlocking {
doSomething() // 코루틴 안에서 호출
}
일반 함수 vs suspend 함수
// ❌ 일반 함수에서는 suspend 함수 호출 불가
fun normalFunction() {
// delay(1000) // 컴파일 에러!
}
// ✅ suspend 함수에서는 가능
suspend fun suspendFunction() {
delay(1000) // OK!
}
🎯 실전 예제
네트워크 요청
data class User(val id: String, val name: String)
suspend fun fetchUser(userId: String): User {
delay(1000) // 네트워크 지연 시뮬레이션
return User(userId, "홍길동")
}
fun main() = runBlocking {
println("요청 시작")
val user = fetchUser("user123")
println("받은 유저: ${user.name}")
}