SC #4: Sintaxis async/await

Published: (January 16, 2026 at 11:18 AM EST)
1 min read
Source: Dev.to

Source: Dev.to

Declaración de funciones async/await

Una función asíncrona debe marcarse con la palabra clave async.
Si la función puede lanzar un error, se añade la palabra clave throws después de async.
Si la función no arroja errores, throws puede omitirse.

func fetchData() async throws -> Data {
    // …
    // ❌ Error de compilación: se debe retornar un valor o lanzar un error
}

Al usar la sintaxis async throws, la función siempre debe devolver un valor o lanzar un error.

Uso de closures

Al trabajar con closures, es fácil olvidar invocarlos, lo que genera errores lógicos (por ejemplo, no notificar un error ni retornar un valor).

func fetchData(_ completion: @escaping (Data?, Error?) -> Void) {
    // No se invoca el bloque `completion(_: )`, lo cual sería un error
}

Ejecutar código async desde un contexto síncrono con Task

Task crea un contexto asíncrono dentro de uno síncrono, permitiendo llamar a un método async desde una función que no soporta concurrencia.

Task {
    try await fetchData()
}

Si no se usa Task, se produce el error:

'async' call in a function that does not support concurrency

Conceptos clave

  • async: indica que la función ejecuta trabajo asíncrono.
  • await: pausa la ejecución hasta que la función asíncrona termina.
  • throws: propaga errores.
Back to Blog

Related posts

Read more »

SC #3: Relación con Swift 6

Swift Concurrency 3 Part Serieshttps://dev.to/david_goyes_a488f58a17a53/series/35092 'Swift Concurrency' fue los cimientos de Swift 6, sin embargo, Swift 6 defi...

Approachable Swift Concurrency

Article URL: https://fuckingapproachableswiftconcurrency.com/en/ Comments URL: https://news.ycombinator.com/item?id=46432916 Points: 11 Comments: 0...