Sebastian Gomez
En este post 📝, vamos a aumentar el número de operadores que podemos implementar y usar dentro de un Observable 🔄 creando el operador of 🔧. Básicamente, será un operador de generación de observables de manera que podamos convertir datos en observables 💡.
Anteriormente, exploramos la implementación del operador filter 🚰 y el operador map 🗺️ en observables, implementándolos desde cero ⏳ de manera similar a como lo hace RX.js 🛠️. Esto nos ayudó a entender un poco más la filosofía y el funcionamiento interno de los observables 🧠.
HOLA
// Crea una constante "fancyObservable" que contiene un Observable creado con el método "of" y el valor 5 como argumento
// Nota: El método "of" proviene de bibliotecas de Observables como RxJS. En este caso, se asume que la biblioteca está importada.
const fancyObservable = Observable.of(5);
// Crea una constante "fancySubscription" que contiene una suscripción al "fancyObservable"
const fancySubscription = fancyObservable.subscribe({
// Define un objeto con un método "next" que acepta un argumento "e"
next(e) {
// Imprime en la consola el valor del argumento "e" cuando el método "next" es llamado
console.log(e);
},
});
Te estarás preguntando, ¿por qué es esto importante? 🤔 ¿Qué sentido tiene convertir un dato ya desenvuelto en un Observable? La respuesta más inmediata es porque, a veces, necesitas combinar datos "puros" con datos que provienen de Observables 💥. Más adelante, veremos maneras de combinar observables, pero no tenemos forma de combinar datos "puros" con observables sin primero llevar los datos a Observables 🔄.
Para implementar el operador of, vamos a crearlo de manera estática, es decir, que esta función va a estar ligada al prototipo (prototype) sin importar si existe o no una instancia de un Observable 🔗.
// Define un método estático "of" dentro de una clase (por ejemplo, la clase "Observable"), que acepta un argumento "value"
static of(value) {
// Retorna una nueva instancia de la clase "Observable" (o la clase que contiene este método estático)
return new Observable(function subscribe(observer) {
// Llama al método "next" del objeto "observer" y le pasa el argumento "value" que fue proporcionado a "of"
observer.next(value);
// Llama al método "complete" del objeto "observer" para indicar que no se emitirán más valores
observer.complete();
// Retorna un objeto que contiene un método "unsubscribe"
return {
// Define el método "unsubscribe" que, en este caso, no realiza ninguna acción
unsubscribe() {}
};
});
}
🎉 ¡Eso es todo! 🎉
Espero que este post te sea de utilidad y lo puedas aplicar a algún proyecto que tengas en mente 🌱, o que simplemente te haya ayudado a entender la naturaleza de los operadores sobre observables 🧩.
Si lograste implementarlo, quieres añadir alguna otra funcionalidad o tienes alguna duda, no dudes en dejarme un comentario en la parte de abajo 📩. Recuerda que si te gustó este post, también puedes compartirlo usando los links a las redes sociales en la parte de abajo 👇. ¡Hasta la próxima! 😄
Creador de contenido principalmente acerca de tecnología.