0Pricing
Swift Academy · Lección

Concurrencia estructurada y funciones async

Defina funciones async , llámelas con await y comprenda la structured concurrency : las tareas hijas terminan antes de que salga el ámbito padre.

Concurrencia estructurada y funciones async es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 3 lecciones en total.

¿Por qué async/await?

async/await le permite escribir código asíncrono que se lee como código síncrono. Con la concurrencia estructurada, las tareas hijas están vinculadas a la duración del ámbito; no hay fugas.

Su primera función async

Una función async puede hacer await sobre otro trabajo asíncrono. Cree un Task en scripts/playgrounds para llamarla.

// Simulate a short async delay, then return a value
func fetchNumber() async -> Int {
    try? await Task.sleep(nanoseconds: 200_000_000) // ~200ms
    return 42
}

// Call sites must use "await" from an async context or a Task
Task {
    let n = await fetchNumber()
    print("Fetched:", n)  // 42
}

Suspensión y reanudación

await suspende la tarea hasta que el resultado está listo y, después, la ejecución se reanuda correctamente en la línea siguiente.

func greet(after seconds: Double) async -> String {
    let ns = UInt64(seconds * 1_000_000_000)
    try? await Task.sleep(nanoseconds: ns)
    return "Hello after \(Int(seconds))s"
}

Task {
    print(await greet(after: 1.0))
    print("Back on the same task after await.")
}

Conceptos básicos de async let

Use async let para iniciar tareas hijas. Pertenecen al ámbito actual y debe esperarlas antes de que el ámbito finalice.

// Run child tasks concurrently within the same scope
func fetchUser() async -> String { "Ana" }
func fetchScore() async -> Int { 90 }

Task {
    async let name = fetchUser()
    async let score = fetchScore()
    // Both start immediately; await joins them before use
    let summary = await "\(name): \(score)"
    print(summary) // "Ana: 90"
    // Scope ends -> child tasks are awaited automatically (structured)
}

Los padres se sincronizan con los hijos

Estructurada significa que los padres no pueden finalizar antes que los hijos. Esto evita trabajo huérfano y hace predecible la duración.

// Parent Task encapsulates children lifetimes
func loadProfile() async -> String {
    async let name = fetchUser()
    async let score = fetchScore()
    return await "\(name) (\(score))"
}

Task {
    let profile = await loadProfile()
    print(profile) // e.g., "Ana (90)"
    // loadProfile does not return until its children are done
}

Pautas

Consejos:

  • Piense en tareas, no en hilos.
  • Use async let para trabajo entre hermanos; use await antes de salir del ámbito.
  • Use Task.sleep para pausar en demostraciones; en aplicaciones reales, espere la E/S de red o de archivos.

Definición de await

Comprobación rápida: ¿Qué hace await?

Repaso

Repaso: Marque las funciones como async y llámelas con await. Use async let para iniciar tareas hermanas y confíe en la concurrencia estructurada para que las tareas hijas terminen antes que los padres.

Preguntas frecuentes

¿La lección «Concurrencia estructurada y funciones async» es gratis?

Sí — el texto completo de «Concurrencia estructurada y funciones async» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Concurrencia estructurada y funciones async»?

Defina funciones async , llámelas con await y comprenda la structured concurrency : las tareas hijas terminan antes de que salga el ámbito padre. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.

¿Cuánto tiempo toma la lección «Concurrencia estructurada y funciones async»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Concurrencia estructurada y funciones async
  2. async let, Task y cancelación
  3. try await y propagación de errores
← Volver a Swift Academy