[ingresar]

Que es una Clausura?

  1. Que es una Clausura (Closure)?
  2. Variables y Valores
  3. Definiendo Funciones
  4. Efectos Secundarios
  5. Las Funciones son Valores
  6. Retornando Funciones
  7. Alcance de Función
  8. Funciones Anidadas
  9. Clausuras con Estado
  10. Datos Privados
  11. Callbacks Asincrónicos
  12. Pasando Continuación

Callbacks Asincrónicos

Algunas veces las funciones pueden tomar mucho tiempo en retornar. Por ejemplo si llamas a una función leer(archivo), la función puede tener que detenerse y esperar a que el disco gire y búsque en el lugar correcto antes de que la información este lista. Si este archivo es en realidad una conexión socket a otro servidor en la nube, la función tendrá que esperar hasta que el otro servidor responda.

Esto puede ser un problema. Por ejemplo, en el browser no queremos que la interfaz de usuario se congele mientras se obtienen los resultados desde Google Maps. En el servidor, no queremos que un pedido que accede a una parte raramente usada de la base de datos ponga en espera a todos los demás pedidos.

Para nuestra suerte hay una solución. En el modelo asincrónico la función leerAsinc acepta ambos parámetros archivo y callback. La función retorna inmediatamente antes de que el archivo sea leído y programa la lectura para que suceda en algún momento en el futuro. Una vez que los datos están listos, la función callback es llamada.

Y que es un callback? Es una clausura! Vamos a ver como usar funciones asincrónicas; implementandolas de otra forma completamente distinta.

El siguiente ejemplo muestra como usarías una función bloqueante normal leer para obtener el contenido de un archivo.

Luego tenemos el mismo ejemplo utilizando una función asincrónica leerAsinc.

Alguien llama a leerArchivoAsinc. Dentro de leerArchivoAsinc, leerAsinc es llamada con la función callback func. Una vez que los datos están listos, leerAsinc llama a func con los datos. Luego func llama a hacerAlgo con el string actualizado conteniendo los datos. Esto puede suceder antes, durante, o después de la ejecución de hacerMasCosas().

Escribir programas que utilizan callbacks asincrónicos puede sentirse un poco extra├▒o, pero nos puede ayudar un poco más utilizar funciones anónimas. Veamos el ejemplo anterior con una función anónima.

Otro ejemplo donde usamos la función asincrónica escribirAsinc(archivo, contenido, callback), pero en este caso el callback no recibe ningún argumento, sólo es llamado una vez que la escritura finaliza.

Como hacerMasCosas está dentro del callback, nos aseguramos que sólo sea llamado una vez que la escritura finaliza.

Definir una funcion llamada hacerCosasAsinc que reciba un argumento callback. Tu función debería leer el contenido del archivo "claves", escribir el resultado en "palabras.txt" con el texto extra "APROPIADA", y luego llamar a callback sin argumentos. Utilizar ambos asincrónicos leerAsinc y escribirAsinc.

1:1

about noticias inicio