0
0
Swiftprogramming~20 mins

Await for calling async functions in Swift - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Async Await Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this async function call?
Consider the following Swift code using async/await. What will be printed when running this code?
Swift
func fetchNumber() async -> Int {
    return 42
}

func printNumber() async {
    let number = await fetchNumber()
    print("Number is \(number)")
}

Task {
    await printNumber()
}
ANumber is 42
BNumber is Optional(42)
CCompilation error due to missing await
DRuntime error: Cannot call async function without await
Attempts:
2 left
💡 Hint
Remember to use await when calling async functions to get their result.
Predict Output
intermediate
2:00remaining
What happens if you omit await when calling an async function?
Look at this Swift code snippet. What error or output will it produce?
Swift
func fetchText() async -> String {
    return "Hello"
}

func test() {
    let text = fetchText()
    print(text)
}

test()
ARuntime error: Async function called without await
BPrints: Hello
CPrints: Optional("Hello")
DCompilation error: Call to async function in a synchronous context without await
Attempts:
2 left
💡 Hint
Async functions must be awaited or called from async context.
🔧 Debug
advanced
2:30remaining
Why does this async function not print the expected result?
Examine the code below. It is supposed to print "Result: 10" but prints nothing. What is the reason?
Swift
func calculate() async -> Int {
    return 10
}

func run() {
    Task {
        let value = await calculate()
        print("Result: \(value)")
    }
}

run()
Aprint statement syntax is incorrect
Brun() is synchronous and exits before Task completes, so print never happens
CMissing await before Task, so Task is not executed
Dcalculate() is not awaited properly inside Task
Attempts:
2 left
💡 Hint
Consider the lifecycle of asynchronous tasks and the main thread.
📝 Syntax
advanced
2:00remaining
Which option correctly awaits an async function inside a synchronous function?
Given an async function fetchData(), which code snippet correctly calls it from a synchronous function?
Swift
func fetchData() async -> String {
    return "Data"
}

func syncCaller() {
    // Which option is correct here?
}
A
Task {
    let data = await fetchData()
    print(data)
}
Blet data = await fetchData()
CfetchData().wait()
Dlet data = fetchData()
Attempts:
2 left
💡 Hint
You cannot use await directly in synchronous functions, but you can start a Task.
🚀 Application
expert
3:00remaining
How many times will the print statement execute in this async sequence?
Analyze the code below. How many times will "Done" be printed?
Swift
func delayedPrint() async {
    for i in 1...3 {
        await Task.sleep(UInt64(500_000_000)) // 0.5 seconds
        print("Done")
    }
}

Task {
    await delayedPrint()
}
A0 times
B1 time
C3 times
DInfinite times
Attempts:
2 left
💡 Hint
The loop runs 3 times with a delay before each print.