見出し画像

Swiftを始めよう! - Concurrency

通常は"同期"的に上から順番に実行されます。が、同時に実行させる方法があり、それが非同期、並行実行、Concurrencyということになります。

非同期に実行したい場合は"async"をつけます。

func fetchUserID(from server: String) async -> Int {
   if server == "primary" {
   return 97
   }
   return 501
}

呼び出したいときは"await "

func fetchUsername(from server: String) async -> String {
   let userID = await fetchUserID(from: server)
   if userID == 501 {
   return "John Appleseed"
   }
   return "Guest"
}

非同期の関数を呼び出し並行に実行したい場合は"async let"

func connectUser(to server: String) async {
  async let userID = fetchUserID(from: server)
  async let username = fetchUsername(from: server)
  let greeting = await "Hello \(username), user ID \(userID)"
  print(greeting)
}

実行します。

Task {
    await connectUser(to: "primary")
}

Hello Guest, user ID 97

と出力されます。

以下参考になると思います(XcodeのPlaygroundで実行できることを確かめています)。


この記事が気に入ったらサポートをしてみませんか?