refactor: improve observable layout change sharing

This commit is contained in:
sashaqred 2020-04-15 11:42:52 +03:00
parent 5cc4c19cee
commit f0d84a6485
No known key found for this signature in database
GPG key ID: 0DB79F7B24682F4B

View file

@ -1,20 +1,20 @@
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs'; import { Observable, Subject } from 'rxjs';
import { delay, share } from 'rxjs/operators'; import { delay, shareReplay } from 'rxjs/operators';
@Injectable() @Injectable()
export class LayoutService { export class LayoutService {
protected layoutSize$ = new Subject(); protected layoutSize$ = new Subject();
protected layoutSizeChange$ = this.layoutSize$.pipe(
shareReplay({ refCount: true }),
);
changeLayoutSize() { changeLayoutSize() {
this.layoutSize$.next(); this.layoutSize$.next();
} }
onChangeLayoutSize(): Observable<any> { onChangeLayoutSize(): Observable<any> {
return this.layoutSize$.pipe( return this.layoutSizeChange$.pipe(delay(1));
share(),
delay(1),
);
} }
} }