Skip to content

Instantly share code, notes, and snippets.

@cerberodev
Created September 17, 2023 19:01
Show Gist options
  • Save cerberodev/177e1bf43c510a6c54c3128ab5f29161 to your computer and use it in GitHub Desktop.
Save cerberodev/177e1bf43c510a6c54c3128ab5f29161 to your computer and use it in GitHub Desktop.
How managment Async Await in dart
import 'dart:async';
/// En este ejemplo:
/// nivel1, nivel3, y nivel4 son funciones asíncronas que simulan completarse correctamente después de 2 segundos.
/// nivel2 simula un error al lanzar una excepción.
/// En la función main, realizamos las operaciones de manera secuencial y manejamos errores para cada nivel con bloques catch.
/// Ten en cuenta que al haber un error en el nivel 2, el código salta directamente al bloque catch sin ejecutar los niveles posteriores. Es esencial recordar que una vez se captura un error en un nivel, la ejecución no continuará hacia los niveles siguientes y se dirigirá al bloque catch.
Future<String> nivel1() async {
await Future.delayed(Duration(seconds: 2));
return 'Nivel 1 completado';
}
Future<String> nivel2() async {
await Future.delayed(Duration(seconds: 2));
// Simulamos un error en este nivel
throw Exception('Error en el nivel 2');
}
Future<String> nivel3() async {
await Future.delayed(Duration(seconds: 2));
return 'Nivel 3 completado';
}
Future<String> nivel4() async {
await Future.delayed(Duration(seconds: 2));
return 'Nivel 4 completado';
}
void main() async {
print('Inicio de la operación');
try {
String resultadoNivel1 = await nivel1();
print(resultadoNivel1);
String resultadoNivel2 = await nivel2();
print(resultadoNivel2);
String resultadoNivel3 = await nivel3();
print(resultadoNivel3);
String resultadoNivel4 = await nivel4();
print(resultadoNivel4);
} catch (e) {
print('Error en la operación: $e');
}
print('Fin de la operación');
}
@cerberodev
Copy link
Author

cerberodev commented Sep 17, 2023

En este ejemplo manejamos asincronía secuencial:

  • nivel1, nivel3, y nivel4 son funciones asíncronas que simulan completarse correctamente después de 2 segundos.

  • nivel2 simula un error al lanzar una excepción.

  • En la función main, realizamos las operaciones de manera secuencial y manejamos errores para cada nivel con bloques catch.

Ten en cuenta que al haber un error en el nivel 2, el código salta directamente al bloque catch sin ejecutar los niveles posteriores. Es esencial recordar que una vez se captura un error en un nivel, la ejecución no continuará hacia los niveles siguientes y se dirigirá al bloque catch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment