IT박스

'of'대 'from'연산자

itboxs 2020. 7. 15. 07:56
반응형

'of'대 'from'연산자


사이의 유일한 차이 Observable.ofObservable.from인수 형식은? 같은 Function.prototype.callFunction.prototype.apply?

Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})

좀 빠지는. 에 배열을 전달할 때 배열 Observable.from과의 유일한 차이점 Observable.of은 인수가 전달되는 방식입니다.

그러나 다음과 Observable.from같은 주장받아 들일 것입니다

구독 가능한 개체, 약속, 관찰 가능한 개체, 배열, 반복 가능한 개체 또는 변환 가능한 개체와 같은 개체

비슷한 동작은 없습니다 Observable.of-항상 값만 허용하고 변환을 수행하지 않습니다.


배열과 같은 구조 (문자열 포함)를 전달할 때 offrom전달할 때 의 차이점에 유의해야합니다 .

Observable.of([1, 2, 3]).subscribe(x => console.log(x));

전체 배열을 한 번에 인쇄합니다.

반면에

Observable.from([1, 2, 3]).subscribe(x => console.log(x));

요소 1을 1로 인쇄합니다.

문자열의 경우 동작은 동일하지만 문자 수준입니다.


또 다른 흥미로운 사실은 Observable.of ([])가 구독 할 때 빈 배열이된다는 것입니다. Observable.from ([])에 가입하면 어떤 가치도 얻지 못합니다.

스위치 맵으로 연속 저장을 할 때 중요합니다. 전의:

.do((data) => {
            this.jobService.save$.next(this.job.id);
        })
        .switchMap(() => this.jobService.addSites(this.job.id, this.sites)
            .flatMap((data) => {
                if (data.length > 0) {
                    // get observables for saving
                    return Observable.forkJoin(jobSiteObservables);
                } else {
                    **return Observable.of([]);**
                }
            })).do((result) => {
            // ..
        })
        .switchMap(() => this.saveComments())
....

addSite 섹션에서 data.length = 0이면 위의 코드는 Observable.of ([])를 반환하고 주석을 저장합니다. 그러나이를 Observable.from ([])으로 바꾸면 후속 메소드가 호출되지 않습니다.

rxfiddle

참고 URL : https://stackoverflow.com/questions/42704552/of-vs-from-operator

반응형