angular - navigationend - simulando dos observables emitiendo sucesivamente
router events angular 6 (1)
Si necesita el resultado del primero para usar en el segundo, puede usar switchMap()
:
Observable.of(''foo'').switchMap(foo => Observable.of(foo + ''bar''))
.subscribe(res => console.log(res)) // ''foobar''
Si solo quieres resultados de cada uno cuando lleguen, utiliza forkJoin()
:
Observable.forkJoin( Observable.of(''foo''), Observable.of(''bar''))
.subscribe(res => console.log(res)) // ''foo'', ''bar''
Tengo un componente que tiene dos propiedades que son observables
@Component({
})
export class MyComponent {
observable1$;
observable1$;
ngOnInit() {
Observable1$ = this.service.getObservable1();
Observable2$ = this.service.getObservable2();
}
}
Practico, observable2$
emitirá bar
solo después de observable1$
emite foo
.
¿Cómo puedo escribir una prueba que simule esto?
Si escribo en mi especificación
mockService.getObservable1.and.returnValue(Observable.of(''foo''))
mockService.getObservable2.and.returnValue(Observable.of(''bar''))
que en mi componente, observable1$
y observable2$
no emitirán sucesivamente ...
¿Cómo puedo tener observable2$
emitir después de observable1
en mi especificación?