Синхронное выполнение означает, что задача блокирует текущий поток до своего завершения — вызывающий код ждёт и никакая другая работа не может продолжаться в этом потоке.
Асинхронное выполнение означает, что задача стартует и сразу возвращает управление, выполняясь в фоне и уведомляя вызывающий код о завершении через коллбэки, делегаты или async/await.
// Синхронное — блокирует вызывающий поток
let data = try Data(contentsOf: url)
// Асинхронное — не блокирующее
URLSession.shared.dataTask(with: url) { data, _, _ in
// вызывается при завершении
}.resume()
Современный синтаксис async/await в Swift делает асинхронный код читаемым и безопасным:
func fetchData() async throws -> Data {
let (data, _) = try await URLSession.shared.data(from: url)
return data
}
async/await для ясности вместо вложенных коллбэковDispatchQueue.main или @MainActor для безопасного обновления UI после завершения фоновой работыСинхронное выполнение блокирует текущий поток до завершения, препятствуя выполнению любой другой работы на этом потоке, в то время как асинхронное выполнение позволяет вызывающему коду продолжить работу немедленно.
Новый — ещё не проверен сообществом
Вы