import{subscribeOn}from"rxjs/operators";import{of,asyncScheduler,asapScheduler}from"rxjs";constasync$=of("asyncScheduler");constasap$=of("asapScheduler");constimmediate$=of("Sin planificador");// Sin utilizar subscribeOnasap$.subscribe(console.log);async$.subscribe(console.log);immediate$.subscribe(console.log);// Salida: asapScheduler, asyncScheduler, Sin planificador// Utilizando subscribeOnasap$.pipe(subscribeOn(asapScheduler)).subscribe(console.log);async$.pipe(subscribeOn(asyncScheduler)).subscribe(console.log);immediate$.subscribe(console.log);// Salida: Sin planificador, asapScheduler, asyncScheduler
Ejemplo de la documentación oficial
Dado el siguiente código:
Tanto el Observable a como el Observable b emitirán sus valores de forma directa y síncrona cuando se realice alguna suscripción sobre ellos. Esto resultará en la siguiente salida: 1, 2, 3, 4, 5, 6, 7, 8, 9
Sin embargo, si se utiliza el operador subscribeOn para indicar que se quiere utilizar el asyncScheduler para los valores emitidos por el Observable a:
La salida será 5, 6, 7, 8, 9, 1, 2, 3, 4. Esto es debido a que el Observable b emite sus valores de forma síncrona y directa, pero las emisiones del Observable a se planifican en el bucle de eventos, dado que se está utilizando el asyncScheduler.