Bueno y tocó el turno de las rutinas.
El híper Trevín.
Vamos a ver todo lo que tiene que ver con la programación asíncrona.
En realidad no queda muy claro si estas hiper Freddick porque en realidad todo va una pila de stack
que se va ejecutando paulatinamente a medida que van consiguiendo memoria y procesador así que vamos
a ver cómo maneja Goh la programación Asana quienes venimos del mundo de Notícies por ejemplo sabemos
que existen las promesas los Cinca Weeds y que existe todo eso que no queda muy claro cómo se maneja
realmente no me ha gustado es un poco complejo como lo maneja Nobbs si es obviamente son cosas que uno
cuando las aprende y las maneja mejor pero no es muy amigable digamos lo que nos ha hecho esta tarea
muy amigable y vamos a ver que son las Gough rutinas las rutinas son el equivalente a las promesas y
así aguay.
Vamos a ver como funciona vamos a crear nuestra Eger 14.
Ya nos está quedando grande todo esto vamos a ir a nuestra carpeta.
Vamos a crear la carpeta Eger 14.
Muy bien ahora vamos a crear nuestro Main puntuó muy bien y vamos a copiar lo habitual.
Bueno muy bien vamos a ver que en import vamos a traer nuestro FNT también nos vamos a atraerla el paquete
strings.
Luego vamos a ver por qué vamos a necesitar una función de este paquete y vamos a traer la FUR el paquete
Time.
Muy bien ya tenemos nuestros tres paquetes.
Qué es lo que vamos a hacer ahora.
Vamos a ver cómo maneja GOW el tema de la ejecución.
Asíncrona lo primero que vamos a hacer es vamos a crear una función que se va a llamar mi nombre lento
porque vamos a mostrar nuestro nombre de manera lenta caracter por caracter en pantalla y mientras esto
va ocurriendo van a ir ocurriendo otras cosas vamos a colocar un nombre que vamos a recibir de parametro
a nuestra función y lo que vamos a hacer aquí es crear una variable letras que lo que va a tener en
realidad letras se va a convertir lo vamos a poner en plural porque van a ser varias letras letras se
va a convertir en un vector.
Cómo convierto letras en un vector con la función string por ejemplo con el paquete string y la función
split.
Esto va a hacer que nombre sea separado por jornada por cadena vacía esto va a lograr que cada caracter
se separe cada caracter va a quedar separado muy bien y ahora vamos a hacer un fork.
No me importa no me importa qué es lo que me va a devolver esta función.
Sabemos que me va a devolver una letra como segundo parámetro y esa función es Ranes la función Ranes
la instrucción.
No es una función va a tomar a mi lector y por cada elemento me va a hacer una iteración muy bien ahora
qué es lo que voy a hacer.
Voy a hacer un time puntos lib.
Esto va a provocar una pausa en la ejecución como está en milisegundos le voy a colocar 1000 milisegundos
por Time Timely seco bien lo que va a hacer esto me va a ir ejecutando cada un segundo o sea en la medida
de un milisegundo lo multiplica por mil y me termina haciendo un LEPP en un segundo.
Cómo colocón segundones LEPP.
Bueno tendría que colocar esto como está para que me lo multiplique y pueda obtener la pausa de un segundo
lo que quiero es que cada letra tarde un segundo en mostrar lo que hacemos ahora es un FNT Freundt Elene
de que deletrea muy bien.
Esta es nuestra función si ahora vamos a llamarla de manera normal.
Mi nombre lento lo voy a enviar a la función es mi nombre.
Vamos a grabar esto vamos a ir a nuestro Eger 14 vamos a hacer un borrador de Maine puntocom y vamos
a ver qué pasa.
Bueno fijense aquí me aparece en una ventana de Avast.
No sé porqué del antivirus funciona como consola lo vamos a desactivar.
Vamos a desactivarlo por una hora y aquí me está ejecutando en mi consola cada un segundo cada un segundo
una letra de mi nombre.
Muy bien ahora es lenta Ustedes imagínense que yo voy a mandar.
Voy a pedir que se ejecute una función que internamente va a estar conectada a base de datos va a estar
haciendo muchas operaciones pero yo no quiero que mi ejecución se detenga.
Yo no quiero que la ejecución se detenga quiero que siga haciendo cosas porque si no voy a tener que
esperar varios segundos por lo menos diez segundos para que mi nombre se escriba en pantalla.
Lo que vamos a hacer es anteponerse al llamado de la función.
La instrucción Go tan simple como esto esto es lo que va a hacer es ejecutar mi nombre lento pero lo
voy a ejecutar de manera asíncrona.
Fíjense que Golo maneja muy sencillo con dos letras no hay ni Cinca guay ni promesa.
Luego vamos a ver en el próximo capítulo cuando veamos channels Cómo puedo tomar el control de esas
llamadas asíncronas.
Cómo puedo obtener asegurarme de que han terminado de ejecutarse lo que serían los aguajes no íbamos
a ver cómo podemos tener el circuito completo de programación asíncrona y totalmente manejado vamos
ahora aquí debajo.
Vamos a hacer un FNT un print LN que diga estoy aquí y vamos debajo de esto vamos a ir más allá.
Vamos a hacer vamos a crear una variable de tipo string le vamos a decir vamos a pedirla por pantalla
vamos a hacer una Scan ln x qué es lo que va a hacer esto va a mostrar por pantalla el mensaje estoy
aquí y va a pedir por teclado que ingrese un valor pero paralelamente se va a ir ejecutando esta función
de manera asíncrona vamos a salvarlo y vamos a ejecutar nuevamente.
Estoy aquí me pide perdón algo me faltó aquí me faltó el puntero en escala tengo que poner un puntero
por eso ha fallado.
Vamos nuevamente vamos a hacer un gol nuevamente.
Ahora estoy aquí pero yo puedo escribir y ahí terminó la ejecución de mi programa.
Por qué.
Porque la última instrucción de main es la que me pide por teclado no termina de ejecutarse.
Mi nombre lento porque yo aquí ya he terminado la ejecución del programa.
Hay que tener mucho cuidado con esto.
El Randa indagó no se queda esperando a que la función asíncrona termine mientras estoy ejecutando la
rutina asíncrona.
El sistema termina la ejecución y aborta el programa.
Esto es muy importante entenderlo por eso vamos a ver en el siguiente capítulo todo lo que tiene que
ver con Channels y cómo manejar ahora de manera correcta la programación asíncrona nos vemos en el próximo
capítulo.