Descripción: El método `Promise.finally` es una adición a la API de Promesas en JavaScript que permite ejecutar un bloque de código una vez que una promesa se ha completado, ya sea que se haya resuelto con éxito o que haya sido rechazada. Este método se introdujo en ECMAScript 2018 (ES9) y proporciona una forma conveniente de realizar tareas de limpieza o de finalización sin tener que duplicar el código en los manejadores de éxito (`then`) y de error (`catch`). La sintaxis de `finally` es simple: se invoca sobre una promesa y acepta una función como argumento, que se ejecutará al final del ciclo de vida de la promesa. Esto es especialmente útil en situaciones donde se necesita garantizar que ciertas acciones se realicen, como cerrar conexiones de bases de datos o liberar recursos, independientemente del resultado de la operación asíncrona. Además, `finally` no afecta el valor de la promesa original; es decir, si se llama a `finally`, el valor devuelto por la promesa se mantiene intacto, permitiendo que se encadenen otras promesas si es necesario. En resumen, `Promise.finally` mejora la legibilidad y la mantenibilidad del código al centralizar la lógica de finalización en un solo lugar.
Historia: El método `Promise.finally` fue introducido en ECMAScript 2018 (ES9), como parte de un esfuerzo por mejorar la API de Promesas en JavaScript. Antes de su inclusión, los desarrolladores a menudo tenían que duplicar código en los manejadores `then` y `catch` para realizar tareas de limpieza, lo que podía llevar a errores y a un código menos limpio. La adición de `finally` permitió a los desarrolladores manejar la finalización de manera más eficiente y clara.
Usos: El método `Promise.finally` se utiliza principalmente para ejecutar código de limpieza o finalización después de que una promesa se haya completado, sin importar su resultado. Esto es útil en situaciones como cerrar conexiones de bases de datos, liberar recursos, o realizar acciones de registro. Al centralizar la lógica de finalización, se mejora la legibilidad y mantenibilidad del código, evitando la duplicación de lógica en los manejadores de promesas.
Ejemplos: Un ejemplo práctico de `Promise.finally` sería el siguiente: al realizar una solicitud a una API, se puede usar `finally` para ocultar un indicador de carga después de que la solicitud se haya completado, sin importar si fue exitosa o fallida. Ejemplo: `fetch(url).then(response => response.json()).catch(error => console.error(error)).finally(() => { loadingIndicator.style.display = ‘none’; });`.