RXJS: Convertir Promesas en Observables con JavaScript

arrow_back Blog

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 somos capaces 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 :).

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto