Funciones para crear Observables
- of: Convierte los argumentos a un observable, puede ser un numero, string, objeto, array, promesa, booleano, function, lambda function ... Trabaja de manera síncrona. Los valores deben de ser mandados con coma, si se mandara un arreglo se tomaria como un unico argumento, se podría usar el operador spread para mandar todos como valores individuales, produciendo lo mismo que sin [ ]
- from: Convierte a un observable desde una array, objeto, promesa, iterable, función generadora, o un objeto observable.
of & from comparativa
const source$ = from([1,2,3,4,5]); // Output: 1, 2, 3, 4, 5
const source$ = of([1,2,3,4,5]); // Output: [1, 2, 3, 4, 5]
const source$ = from('Alejandro'); // Output: A, l, e, j, a, n, d, r, o
const source$ = of('Alejandro'); // Output: Alejandro
- fromEvent: Crea un observable que emite un evento del tipo específico asignado:
fromEvent(document,'click')
- range: Crea un observable que emite una secuencia de numeros dentro de un rango específico. Específicando solo un valor emite ese número de veces empezando desde el 0:
range(2) // Emits 0, 1
range(1,5) // Emits 1, 2, 3, 4, 5
- interval: Crea un observable que emite una secuencia de números cada intervalo especificado de manera infinita:
interval(1000). Si no se especifica ningun valor: interval() el intervalo se ejecutaría cada milisegundo.
- timer: Crea un observable que espera el tiempo asignado o fecha antes de ejecutarse. Se puede usar junto con pipe y map para que ejecute la función se quiera.
- asyncScheduler: Programa una tarea para que sea ejecutada en el tiempo específico, haciendo a esa tarea o función asíncrona:
Parecido a un setTimeout usando asynScheduler
// Esta función seria ejecutada al cabo de 3 segundos
const saludar = () => console.log('Hola Mundo');
asyncScheduler.schedule(saludar,3000)
// Para enviar argumentos a la función, debe de ser como un ESTADO detrás del intervalo.
const saludar = (nombre) => console.log(`Hola ${nombre}`);
asyncScheduler.schedule(saludar,3000,'Alejandro') // Se puede enviar también un objeto: {nombre: 'Alejandro'}
Parecido a un setInterval usando asynScheduler
// No puede ser una función de flecha, la razón es que para hacer un intervalo vamos a tener que usar el THIS,
// que solo esta disponible las funciones normales. Esta función tambien puede estar separada en otra parte del código
const subs = asyncScheduler.schedule(function (state){
console.log('state',state);
this.schedule(state + 1, 1000)
}, 3000, 0)
// También podemos desuscribirnos usando un asyncScheduler en lugar de un setTimeout
asyncScheduler.schedule( () => subs.unsubscribe(), 6000 )