Introducción al asincronismo

<aside> 💡 Javascript utiliza un modelo asíncrono y no bloqueante, con un loop de eventos implementado con un único thread para sus interfaces de entrada/salida.

</aside>

El asincronismo es básicamente una manera de aprovechar el tiempo y los recursos de nuestra aplicación, ejecutando tareas y procesos mientras otros procesos son resueltos en el background como la llegada de la información de una API, para posteriormente continuar con las tareas que requerían esa información que no tenías de manera instantánea.

Asincronismo vs sincronismo 💡

En lenguajes síncronos al hacer un temporizador para ejecutar una función, todo el código se pausa hasta terminar ese tiempo, mientras que en Javascript u otros lenguajes asíncronos, podemos estar aprovechando ese tiempo para ejecutar otros procesos hasta que ese tiempo termina.

Event loop

<aside> 💡 El Event Loop hace que JavaScript parezca ser multihilo a pesar de que corre en un solo proceso.

</aside>

Estructura Callback

Los callbacks son el nombre de una convención para usar funciones que llaman a otras en JavaScript. No hay una palabra reservada llamada “callback” en el lenguaje JavaScript que haga que nuestro código sea diferente o especial, es más una convención. Callback es solo la idea que una función necesita hacer una tarea adicional y se devolvera con otro dato para estar completa.

// Un callback es una función que recibe como argumento, otra función.
function sum(num1, num2) {
  return num1 - num2;
}

function calc(num1, num2, callback) {
  return callback(num2, num1);
}
console.log(calc(2, 3, sum));
// 5

// En está ocasión vamos a controlar que es lo que se va a retornar primero.
// Para eso podemos utilizar 'setTimeOut'

function date(callback) {
  console.log(new Date());
  setTimeout(function () {
    let date = new Date();
    callback(date);
  }, 3000);
}
function printDate(dateNow) {
  console.log(dateNow);
}
date(printDate);

Peticiones a APIs usando Callbacks