Skip to main content

Why can’t we call async functions using async var?

About 2 minSwiftArticle(s)bloghackingwithswift.comcrashcourseswiftxcodeappstore

Why can’t we call async functions using async var? 관련

Swift Concurrency by Example

Back to Home

Why can’t we call async functions using async var? | Swift Concurrency by Example

Why can’t we call async functions using async var?

Updated for Xcode 15

Swift’s async let syntax provides short, helpful syntax for running lots of work concurrently, allowing us to wait for them all later on. However, it only works as async let – it’s not possible to use async var.

If you think about it, this restriction makes sense. Consider pseudocode like this:

func fetchUsername() async -> String {
    // complex networking here
    "Taylor Swift"
}

async var username = fetchUsername()
username = "Justin Bieber"
print("Username is \(username)")

That attempts to create a variable asynchronously, then writes to it directly. Have we cancelled the async work? If not, when the async work completes will it overwrite our new value? Do we still need to use await when reading the value even after we’ve explicitly set it?

This kind of code would create all sorts of confusion, so it’s just not allowed – async let is our only option.

Similar solutions…
How to call async throwing functions | Swift Concurrency by Example

How to call async throwing functions
How to call an async function using async let | Swift Concurrency by Example

How to call an async function using async let
How to create and call an async function | Swift Concurrency by Example

How to create and call an async function
How to fix the error “async call in a function that does not support concurrency” | Swift Concurrency by Example

How to fix the error “async call in a function that does not support concurrency”
How to use continuations to convert completion handlers into async functions | Swift Concurrency by Example

How to use continuations to convert completion handlers into async functions

이찬희 (MarkiiimarK)
Never Stop Learning.