Resumen
En ciencias de la computación, future, promise, delay y deferred se refieren a construcciones utilizadas para sincronizar la ejecución de programas en algunos lenguajes de programación concurrente. Describen un objeto que actúa como un proxy para un resultado que inicialmente es desconocido, por lo general porque la computación de su valor aún no está completa.
El término promise fue propuesto en 1976 por Daniel P. Friedman y David Wise,
y Peter Hibbard lo llamó eventual.
Un concepto algo similar, future, fue introducido en 1977 en un artículo de Henry Baker y Carl Hewitt.
Los términos future, promise, delay y deferred se usan a menudo de manera intercambiable, aunque algunas diferencias en el uso entre future y promise se tratan a continuación. En concreto, cuando se distingue el uso, un future es una vista de marcador de posición de solo lectura de una variable, mientras que un promise es un contenedor de asignación única escribible que establece el valor del future. En particular, un future puede definirse sin especificar qué promise específico establecerá su valor, y diferentes promises posibles pueden establecer el valor de un future dado, aunque esto solo puede hacerse una vez para un future dado. En otros casos, un future y un promise se crean juntos y se asocian entre sí: el future es el valor, el promise es la función que establece el valor, esencialmente el valor de retorno (future) de una función asíncrona (promise). Establecer el valor de un future también se denomina resolverlo, cumplirlo o vincularlo.
Aplicaciones
Futures y promises se originaron en la programación funcional y paradigmas relacionados (como la programación lógica) para desacoplar un valor (un future) de cómo se computó (un promise), permitiendo que la computación se realice de manera más flexible, en particular paralelizando. Posteriormente, encontraron uso en la computación distribuida, para reducir la latencia de los viajes de ida y vuelta de comunicación. Más tarde, ganaron más uso al permitir escribir programas asíncronos en estilo directo, en lugar de en estilo de paso de continuaciones.
De Wikipedia (CC BY-SA 4.0).