An async function is a special function that can pause its work to wait for a task to finish without blocking the whole app. It lets your app stay responsive while doing slow tasks like downloading data.
Click to reveal answer
beginner
How do you declare an async function in Swift?
You add the keyword async after the function's parameters and before the return type. For example: func fetchData() async -> String.
Click to reveal answer
beginner
What keyword do you use to call an async function?
You use the await keyword before calling an async function to tell Swift to wait for the result without blocking the app.
Click to reveal answer
beginner
Why should you use async functions in mobile apps?
Async functions keep the app smooth and responsive by running slow tasks in the background. This avoids freezing the screen or making the app feel stuck.
Click to reveal answer
intermediate
What happens if you call an async function without using await?
Swift will give a compile error because async functions must be awaited or handled properly to ensure the app waits for their result safely.
Click to reveal answer
Which keyword marks a function as asynchronous in Swift?
Aawait
Basync
Cdefer
Dsync
✗ Incorrect
The async keyword declares a function as asynchronous.
What keyword do you use to wait for an async function's result?
Aawait
Basync
Cwait
Dpause
✗ Incorrect
You use await to pause and wait for the async function's result.
What is the main benefit of using async functions in mobile apps?
AMake the app run slower
BAvoid using memory
CBlock the user interface
DKeep the app responsive during slow tasks
✗ Incorrect
Async functions keep the app responsive by running slow tasks without blocking the UI.
Which of these is a correct async function declaration in Swift?
Afunc loadData() -> async String
Basync func loadData() -> String
Cfunc loadData() async -> String
Dfunc async loadData() -> String
✗ Incorrect
The correct syntax places async after the parameters and before the return type.
What happens if you forget to use await when calling an async function?
AYou get a compile-time error
BThe app crashes at runtime
CThe function is ignored
DThe function runs synchronously
✗ Incorrect
Swift requires await to call async functions; otherwise, it shows a compile error.
Explain how async and await work together in Swift to keep an app responsive.
Think about how waiting for slow tasks can freeze or not freeze the app.
You got /4 concepts.
Describe a real-life example where using async functions improves user experience in a mobile app.
Consider downloading images or fetching data from the internet.
You got /4 concepts.
Practice
(1/5)
1. What does marking a function with async in Swift mean?
easy
A. The function cannot call other functions.
B. The function runs only once and then stops.
C. The function must return an integer value.
D. The function can pause and resume without blocking the app's main thread.
Solution
Step 1: Understand async function behavior
Async functions allow pausing and resuming work without freezing the app's main thread.
Step 2: Compare options with async meaning
Only The function can pause and resume without blocking the app's main thread. correctly describes this behavior; others are unrelated or incorrect.
Final Answer:
The function can pause and resume without blocking the app's main thread. -> Option D
Quick Check:
Async means non-blocking pause/resume = A [OK]
Hint: Async means work happens without freezing UI [OK]
Common Mistakes:
Thinking async means the function runs only once
Confusing async with return types
Believing async functions cannot call others
2. Which of the following is the correct way to declare an async function in Swift?
easy
A. func fetchData() async throws -> String {}
B. async func fetchData() -> String {}
C. func async fetchData() throws -> String {}
D. func fetchData() throws async String {}
Solution
Step 1: Recall Swift async function syntax
In Swift, async comes after the parameter list and before the return type.
Step 2: Match options to correct syntax
Only func fetchData() async throws -> String {} matches the correct syntax: func name() async throws -> Type {}.
Final Answer:
func fetchData() async throws -> String {} -> Option A
Quick Check:
Async keyword after () = C [OK]
Hint: Async keyword goes after function parameters () [OK]
Common Mistakes:
Placing async before func keyword
Mixing async and throws order
Putting async after return type
3. What will be printed by this Swift code?
func fetchNumber() async -> Int {
return 42
}
Task {
let number = await fetchNumber()
print(number)
}
medium
A. 42
B. nil
C. Task
D. Compilation error
Solution
Step 1: Understand async function return
The async function fetchNumber() returns 42 as an Int.
Step 2: Await call inside Task and print
The await keyword waits for the async function to finish, then prints 42.
Final Answer:
42 -> Option A
Quick Check:
Await fetch returns 42 printed = D [OK]
Hint: Await pauses until async returns value [OK]
Common Mistakes:
Expecting nil because of async
Thinking Task prints itself
Assuming compilation error without await
4. Identify the error in this Swift async code:
func loadData() async -> String {
return "Data"
}
let result = loadData()
print(result)
medium
A. Async functions cannot return String
B. Missing await keyword when calling async function
C. Function must be marked throws
D. Cannot print async function result
Solution
Step 1: Check async function call
Async functions must be called with await to get their result.
Step 2: Identify missing await
The code calls loadData() without await, causing a compile error.
Final Answer:
Missing await keyword when calling async function -> Option B
Quick Check:
Call async with await = B [OK]
Hint: Always use await when calling async functions [OK]
Common Mistakes:
Calling async functions without await
Thinking async functions can't return String
Assuming print can't show async results
5. You want to fetch user data and then fetch user image asynchronously in Swift. Which code correctly waits for both tasks in order?
hard
A. async func loadUser() {
let data = fetchUserData()
let image = fetchUserImage(data.id)
print(image)
}
B. func loadUser() {
let data = fetchUserData()
let image = fetchUserImage(data.id)
print(image)
}
C. async func loadUser() {
let data = await fetchUserData()
let image = await fetchUserImage(data.id)
print(image)
}
D. async func loadUser() {
let data = await fetchUserData()
let image = fetchUserImage(data.id)
print(image)
}
Solution
Step 1: Understand async calls order
Both fetchUserData() and fetchUserImage() are async and must be awaited to complete before next step.
Step 2: Check which code awaits both calls
Only async func loadUser() {
let data = await fetchUserData()
let image = await fetchUserImage(data.id)
print(image)
} awaits both calls in order, ensuring data is ready before fetching image.
Final Answer:
async func loadUser() {
let data = await fetchUserData()
let image = await fetchUserImage(data.id)
print(image)
} -> Option C
Quick Check:
Await each async call in order = A [OK]
Hint: Await each async call to run sequentially [OK]
Common Mistakes:
Not awaiting async calls
Calling async functions without async keyword
Mixing sync and async calls incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.