Bird
Raised Fist0
Swiftprogramming~20 mins

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

Choose your learning style10 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.

Practice

(1/5)
1. What does the await keyword do when calling an async function in Swift?
easy
A. It makes the function run faster by skipping some steps.
B. It pauses the current code until the async function finishes and returns a result.
C. It converts the async function into a synchronous one automatically.
D. It runs the async function in the background without waiting.

Solution

  1. Step 1: Understand the role of await

    The await keyword tells Swift to pause the current code execution until the async function completes.
  2. Step 2: Recognize the effect on program flow

    This means the program waits for the async task to finish and then continues with the result.
  3. Final Answer:

    It pauses the current code until the async function finishes and returns a result. -> Option B
  4. Quick Check:

    await pauses code = A [OK]
Hint: Remember: await waits for async tasks to finish before continuing [OK]
Common Mistakes:
  • Thinking await makes code run faster
  • Believing await runs code in background without waiting
  • Confusing await with automatic sync conversion
2. Which of the following is the correct way to call an async function named fetchData() inside another async function in Swift?
easy
A. let result = fetchData()
B. let result = async fetchData()
C. await let result = fetchData()
D. let result = await fetchData()

Solution

  1. Step 1: Recall async function call syntax

    When calling an async function, you must use await before the function call to wait for its result.
  2. Step 2: Check the correct placement of await

    The correct syntax is let result = await fetchData(). The await keyword comes before the function call.
  3. Final Answer:

    let result = await fetchData() -> Option D
  4. Quick Check:

    Use await before async call = D [OK]
Hint: Put await right before the async function call [OK]
Common Mistakes:
  • Omitting await before the async call
  • Placing await after the assignment
  • Using async keyword instead of await
3. What will be printed by the following Swift code?
func fetchNumber() async -> Int {
    return 42
}

func printNumber() async {
    let number = await fetchNumber()
    print(number)
}

Task {
    await printNumber()
}
medium
A. No output, code will not run
B. Optional(42)
C. 42
D. Compilation error due to missing await

Solution

  1. Step 1: Understand async function behavior

    The function fetchNumber() returns 42 asynchronously. Using await waits for this value.
  2. Step 2: Trace the print statement

    The printNumber() function awaits fetchNumber() and prints the returned integer 42.
  3. Final Answer:

    42 -> Option C
  4. Quick Check:

    Await returns 42 printed = A [OK]
Hint: Await returns the actual value, so print shows 42 [OK]
Common Mistakes:
  • Expecting Optional(42) instead of 42
  • Thinking code won't run without main async
  • Missing await causing compile error
4. Identify the error in this Swift code snippet:
func getData() async -> String {
    return "Hello"
}

func showData() {
    let message = await getData()
    print(message)
}
medium
A. showData() must be marked async to use await inside it
B. Missing await keyword before getData()
C. getData() should not be async if awaited
D. print(message) cannot print async results

Solution

  1. Step 1: Check where await is used

    The await keyword is used inside showData(), but this function is not marked async.
  2. Step 2: Understand async function rules

    In Swift, you can only use await inside an async function or a Task closure. So showData() must be declared async.
  3. Final Answer:

    showData() must be marked async to use await inside it -> Option A
  4. Quick Check:

    Await requires async function = B [OK]
Hint: Use await only inside async functions or Task closures [OK]
Common Mistakes:
  • Forgetting to mark function async when using await
  • Thinking await can be used in normal functions
  • Confusing async function declaration with await usage
5. You want to fetch user data and then fetch user posts, both are async functions: fetchUser() and fetchPosts(userId:). How do you correctly wait for both results in sequence inside an async function?
hard
A. let user = await fetchUser() let posts = await fetchPosts(userId: user.id)
B. let user = fetchUser() let posts = fetchPosts(userId: user.id)
C. await let user = fetchUser() await let posts = fetchPosts(userId: user.id)
D. let user = await fetchUser() let posts = fetchPosts(userId: await user.id)

Solution

  1. Step 1: Await the first async call to get user

    You must use await before fetchUser() to get the user data before using it.
  2. Step 2: Await the second async call using user.id

    After getting the user, call fetchPosts(userId: user.id) with await to get posts.
  3. Final Answer:

    let user = await fetchUser() let posts = await fetchPosts(userId: user.id) -> Option A
  4. Quick Check:

    Await each async call in order = C [OK]
Hint: Await each async call separately in sequence [OK]
Common Mistakes:
  • Not awaiting the second async call
  • Trying to await variable declarations incorrectly
  • Using await inside function arguments wrongly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard