Async/Await (Parte 1 de 11)
1Paralelización con async let
2Calcular tiempo de ejecución de un código
3¿Qué es un Task?
4¿Qué es un Actor y para que se utilizan?
5¿Qué es Main Actor?
6Modificador task
7Cómo utilizar Task Group
8Trabajando con iteraciones asíncronas usando AsyncSequence
9Mezclando código síncrono y asíncrono usando CheckedContinuation
10Optimiza la eficiencia de tu código concurrente con DiscardingTaskGroup
11Explorando Task-local
Paralelización con async let
Libranner Santos
16 febrero, 20232min de lectura
Una de las formas de ofrecer una mejor experiencia de usuario es haciendo uso de paralelización para hacer nuestras apps más responsivas.
Usando async let
podemos ejecutar varias operaciones asíncronas al mismo tiempo.
Cómo usar async let
Imagina que tienes dos funciones asíncronas una llamada getInt()
que retorna un entero luego de hacer unos cálculos y otra llamada getString()
que también es asíncrona pero retorna una cadena de texto. Para hacer un requerimiento necesitas imprimir los resultados de cada una de estas dos funciones.
Una primera opción podría ser ejecutar estas dos funciones de la siguiente forma:
let number = await getInt()let text = await getString()print("\(number) \(text)")
Esto funcionaría, pero para ejecutar la segunda función debemos esperar a que la primera retorne, por lo que no estamos haciendo un uso eficiente de los recursos de paralelización.
Si queremos llamarlas las dos haciendo uso de paralelización, tendríamos que usar el siguiente código:
async let numberOperation = getInt()async let textOperation = getString()let (number, text) = await (numberOperation, textOperation)print("\(number) \(text)")
Con esto guardaremos en las variables number
y text
igual que el código anterior, sin embargo, gracias a async let
las funciones se ejecutarán en paralelo pudiendo así terminar las operaciones en menos tiempo.
Cosas a tomar en cuenta
- Si alguna de las funciones asíncronas puede emitir excepciones, debemos usar
try
o unas de sus variacionestry?
,try!
. async let
es muy conveniente para pocas cantidades de tareas, si tenemos muchas tareas es mejor considerar usarTaskGroup
.- Las funciones que hagan uso de
async let
deben ser independientes y el orden en que se ejecuten no debe importar.
Async/Await (Parte 1 de 11)
1Paralelización con async let
2Calcular tiempo de ejecución de un código
3¿Qué es un Task?
4¿Qué es un Actor y para que se utilizan?
5¿Qué es Main Actor?
6Modificador task
7Cómo utilizar Task Group
8Trabajando con iteraciones asíncronas usando AsyncSequence
9Mezclando código síncrono y asíncrono usando CheckedContinuation
10Optimiza la eficiencia de tu código concurrente con DiscardingTaskGroup
11Explorando Task-local