?Esta nota es una continuación de algunas anteriores que forman parte de nuestro curso de kotlin. Para que puedas comprender bien este tema te animamos a que veas las notas anteriores.
Consideremos un método hipotético que realiza la operación de forma asincrónica y toma un parámetro Callback <T> para informar su finalización con el valor resultante o un error.
El método de inicio de sesión se ejecuta y regresa de forma inmediata, lo que permite a la aplicación hacer otras cosas en lugar de quedarse allí esperando la respuesta.
LLAMADAS MÚLTIPLES
Pero, ¿qué pasa si después de obtener el objeto de usuario en el método onSuccess de devolución de llamada necesitamos hacer otra llamada asincrónica para la alimentación de inicio del usuario y los nuevos mensajes de entrada del usuario?
En lo anterior, creamos una gran pila de llamadas y luego llamamos a un par de funciones IO. Para el rendimiento, esa operación utiliza la API asincrónica subyacente del sistema operativo. No podemos esperar a que se complete porque no lo hará. Tenemos que regresar todo el tiempo al ciclo de eventos de nuestro idioma y darle al sistema operativo un poco de tiempo antes de que termine.
Esto también se convierte en un problema porque cada devolución de llamada actúa como un hilo, pero no hay forma de "reunir" las tareas y devolver los resultados agregados. Tendríamos que hackear y guardar el resultado en algún tipo de variables globales. ¡Lo cual, como podrás imaginarte, no es bueno!
Nota: CompleteableFuture tampoco nos arregla nada. Si los has usado, sabes que todavía está creando montones gigantes de literales de funciones. Solo los estás pasando a .whenComplete () o
onError en lugar de a la función asincrónica misma.
En la siguiente nota hablaremos más del tema. Ahora puedes ver nuestro curso de C# y el curso de php