Promesas de JavaScript: una introducción

Las promesas simplifican los cálculos diferidos y asíncronos. Una promesa representa una operación que aún no se ha completado.

Jake Archibald
Jake Archibald

Desarrolladores, prepárense para un momento crucial en la historia del desarrollo web.

[Comienza el redoble]

¡Las promesas han llegado a JavaScript!

[Explotan fuegos artificiales, llueve papel brillante desde arriba, la multitud se enloquece]

En este punto, de seguro caes en una de estas categorías:

  • La gente a tu alrededor están muy emocionadas, pero no estás seguro de qué se trata tanto alboroto. Tal vez ni siquiera estás seguro de qué es una "promesa". Te tomas de los hombros, pero el peso del papel brillante recae sobre los mismos. Si es así, no te preocupes por eso, me tomó años averiguar por qué debería preocuparme por estas cosas. Probablemente quieras empezar por el principio.
  • ¡Mandas tus puños al aire! Ya era hora, ¿verdad? Has usado estas cosas de Promise (promesas) antes, pero te molesta que todas las implementaciones tengan una API ligeramente diferente. ¿Cuál es la API de la versión oficial de JavaScript? Probablemente desees comenzar con la terminología.
  • Ya lo sabías y te burlas de los que están saltando como si fuera una novedad para ellos. Tomate un momento para disfrutar de tu propia superioridad para luego ir directamente a la referencia del API.

¿Qué es todo este alboroto?

JavaScript es de un solo subproceso (single thread), lo que significa que dos bits de secuencia de comandos no se pueden ser ejecutados al mismo tiempo; tienen que correr uno tras otro. En los navegadores, JavaScript comparte un hilo con un montón de otras cosas que difieren de un navegador a otro. Pero, por lo general, JavaScript está en la misma cola que pintar, actualizar estilos y manejar las acciones del usuario (como resaltar texto e interactuar con los controles del formulario). La actividad en una de estas cosas retrasa las demás.