ES2018 - finalmente promete método

El autor de la nota, cuya traducción publicamos hoy, dice que apenas se abstuvo de no llamarlo "Finalmente, la oportunidad que todos esperaban", o de alguna manera bromear sobre este tema. Al final, decidió prescindir de bromas y simplemente hablar sobre la característica realmente importante y útil de los objetos Promise.


Si recién está comenzando a aprender JavaScript y no está muy familiarizado con las promesas (a veces se les llama "promesas", "resultados prometidos", "Objetos de promesa"), puede que le interesen nuestras publicaciones anteriores sobre este tema:

Promesas en ES6: patrones y antipatrones
JavaScript: métodos de programación asincrónicos
JavaScript ES8 y transición a asíncrono / espera
Asíncrono / espera: 6 razones para olvidarse de las promesas
Escapar del infierno asíncrono / esperar
JavaScript ES6: escribe menos - haz más
Guía de promesas para aquellos que quieran resolverlos
Diseño asíncrono / en espera de JavaScript: fortalezas, dificultades y patrones de uso
Uso de promesas en JavaScript

Promise.prototype.finally Method


La cláusula 25.6.5.3 del estándar ECMAScript 2018 está dedicada al método Promise.prototype.finally . Según caniuse.com , el nivel de soporte para este método es aproximadamente del 81%. Este método también se puede usar en Node.js.

El método de promesa final es una de las innovaciones más importantes del estándar, que le permite especificar una función que se ejecutará independientemente del resultado de la promesa. Dicha función se cumplirá si la promesa se resuelve con éxito y si se rechaza.
Considere un ejemplo:

 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); 

Esta es una promesa perfectamente común que se resuelve después de 2000 milisegundos. Si después de eso necesitamos realizar alguna acción, necesitaremos un bloque de then :

 myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ); 

Se pasan dos funciones anónimas al método then . El primero se ejecutará si la promesa se resuelve con éxito. El segundo es cuando es rechazado. ¡Nuestra promesa siempre se completa con éxito, el mensaje de success!!! siempre se mostrará en la consola success!!! . Todo esto es muy bueno, pero ¿qué pasa si es necesario que ciertas acciones se lleven a cabo después del rechazo de la promesa y después de la finalización exitosa de su trabajo? Aquí el finally método nos ayudará:

 const myPromise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success!!!'); }, 2000); }); myPromise.then( result => { console.log(result) }, failMessage => { console.log(failMessage) } ).finally(finallyMessage => { console.log('FINALLY!!')}); 

Independientemente de cómo la promesa complete su trabajo, además del mensaje correspondiente, ¡el texto FINALLY!! , que nos dice que la función de devolución de llamada pasada al método finally funciona de todos modos. Para verificar esto, puedes experimentar .

Resumen


El hecho de que el método Promise.prototype.finally haya aparecido en ES2018 sugiere que se puede esperar un nivel muy alto de soporte de navegador en el futuro previsible. Esto significa que lo que antes tenía que usar herramientas auxiliares creadas por desarrolladores de terceros ahora se puede implementar usando herramientas estándar.

¿En qué situaciones puede ser Promise.prototype.finally método Promise.prototype.finally ? Por ejemplo, si, cuando comienza la Promesa utilizada para descargar algo, comienza a reproducirse una animación, finally puede completar esta animación. En el bloque finally , puede, por ejemplo, cerrar una determinada ventana modal. De hecho, hay muchas situaciones en las que el método de finally puede ser útil.

Estimados lectores! ¿Ha utilizado sustitutos para el método de promesas finalmente antes de sus implementaciones estándar?

Source: https://habr.com/ru/post/es427405/


All Articles