우사미 코딩

동기 await, async 본문

Programming (C++)/XCode, SwiftUI

동기 await, async

맑은 눈의 우사미 2024. 7. 10. 05:42
반응형

 

struct ContentView: View {
    var body: some View {
        Button(action : {
            Task{
                await doSomething()
            }
        }) {
            Text("Do Something")
        }
    }

    
    func doSomething() async {
        print("start \(Date())")
        await takesTooLong()
        print("End \(Date())")
    }
    
    func takesTooLong() async {
        print("takesTooLong")
        sleep(5)
        print("Async task copleted at \(Date())")
    }
}

 

async는 동기화 하겠다는 뜻

await는 함수 호출이 끝나기 전까지 기다리겠다는 뜻

 

 

 

* async, let, await (동기함수에서 반환값이 있고 동기 함수의 실행을 모두 기다려야 하는 경우)

    func doSomething() async {
        print("start \(Date())")
        async let result =  takesTooLong()
        print("after async-let \(Date())")
        print("result = \(await result)")
        print("End \(Date())")
    }
    
    func takesTooLong() async -> Date {
        sleep(5)
        return Date()
    }​

 

출력값

start 2024-07-09 20:45:13 +0000
after async-let 2024-07-09 20:45:13 +0000
result = 2024-07-09 20:45:18 +0000
End 2024-07-09 20:45:18 +0000
반응형
Comments