Convertir Promesas en Observables

Convertir Promesas en Observables
En esta entrada vamos a desarrollar un sencillo ejemplo para convertir Promesas en Observables.

Las promesas y los observables se ejecutan de forma asíncrona, la principal diferencia entre ambos es que mientras las promesas devuelven un único resultado, los Observables nos permiten definir una secuencia a partir de todos los métodos que nos ofrecen.

Por lo tanto, podemos obtener muchas ventajas si podemos convertir Promesas en Observables, ya que nos vamos a beneficiar de todos los recursos de un Observable.

Debe quedar claro que esto no siempre será lo mejor, si únicamente necesitas acceder al valor retornado por la petición la promesa será suficiente.

Ejemplo básico Promesa

Si no estás muy familiarizado con estos temas, no te preocupes, primero vamos a ver un sencillo ejemplo de una promesa y cómo acceder al valor retornado.

Una promesa resuelve o rechaza, si todo ha ido bien al ejecutar then tendremos el valor esperado, en otro lugar, dentro del catch tendremos el error que hemos devuelto, en este caso con reject, así de simple.

Ejemplo básico Observable

Ahora vamos a hacer lo mismo pero con un Observable, verás que difiere pero obtenemos el mismo resultado.

En nuestro caso utilizamos el operador of del Observable para definir el contenido, el operador map para alterar el resultado y el operador catch para capturar la excepción si existe.

Estas son algunas de las muchas ventajas de los observables, que no devuelven de forma inmediata un resultado.

Finalmente, para acceder al valor del usuario, debemos ejecutar el método subscribe, así de simple.

Convertir Promesas en Observables

Para terminar el ejemplo vamos a ver lo sencillo que es pasar una promesa a un observable para beneficiarnos de sus funcionalidades.

Lo único que debemos hacer es utilizar fromPromise y pasarle una promesa, sólo por hacer eso ya podremos ejecutar la promesa como si fuese un observable.

Si en lugar de una promesa tenemos un array o un objeto por ejemplo, podríamos utilizar Observable.from, que sirve para todo :).

Añade un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies
Nuevo Curso de Vuejs 2 Avanzado con Vuex y AdonisJs 4Acceder ahora
+ +