Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- change detection
- sealize
- typescript
- border-width
- 변화감지
- rxjs
- fromEvent
- Visual Studio Code
- php
- 이미지바꾸기
- 테두리굵기
- hashchange
- ChangeDetectorRef
- Git
- VSCode
- aab 배포
- NVM
- JavaScript
- ion-range
- 자바스크립개념
- getElementsByClassName
- Sentry
- angular
- IONIC3
- angular5
- zsh
- code .
- error
- Ionic
- oh-my-zsh
Archives
- Today
- Total
hsunny study blog
forkjoin 마이그레이션 본문
rxjs 6.5버전 부터 forkJoin으로 넘기는 인자의 형태가 달라졌다.
이전 사용방식 (< RxJS 6.5)
import { interval, forkJoin, of } from 'rxjs';
import { delay, take } from 'rxjs/operators';
const myPromise = val =>
new Promise(resolve =>
setTimeout(() => resolve(`Promise Resolved: ${val}`), 5000)
);
const example = forkJoin(
// 'Hello' 즉시 출력
sourceOne: of('Hello'),
// 1초 후에 'World' 출력
sourceTwo: of('World').pipe(delay(1000)),
// 1초 후에 0출력
sourceThree: interval(1000).pipe(take(1)),
// 1초 뒤 0, 2초 뒤 1 출력 (최종적으로 1이 남음)
sourceFour: interval(1000).pipe(take(2)),
// 5초 뒤에 resolve 값 출력
sourceFive: myPromise('RESULT')
);
/*
* Output:
* [
* "Hello",
* "World",
* 0,
* 1,
* "Promise Resolved: RESULT"
* ]
*/
const subscribe = example.subscribe(val => console.log(val));
변경된 방식 ( RxJS 6.5<=)
1.
import { interval, forkJoin, of } from 'rxjs';
import { delay, take } from 'rxjs/operators';
const myPromise = val =>
new Promise(resolve =>
setTimeout(() => resolve(`Promise Resolved: ${val}`), 5000)
);
// Using a dictionary of sources
const example = forkJoin({
sourceOne: of('Hello'),
sourceTwo: of('World').pipe(delay(1000)),
sourceThree: interval(1000).pipe(take(1)),
sourceFour: interval(1000).pipe(take(2)),
sourceFive: myPromise('RESULT')
});
/*
* Output:
* {
* sourceOne: "Hello",
* sourceTwo: "World",
* sourceThree: 0,
* sourceFour: 1,
* sourceFive: "Promise Resolved: RESULT"
* }
*/
const subscribe = example.subscribe(val => console.log(val));
2.
import { interval, forkJoin, of } from 'rxjs';
import { delay, take } from 'rxjs/operators';
const myPromise = val =>
new Promise(resolve =>
setTimeout(() => resolve(`Promise Resolved: ${val}`), 5000)
);
const example = forkJoin([
// 'Hello' 즉시 출력
sourceOne: of('Hello'),
// 1초 후에 'World' 출력
sourceTwo: of('World').pipe(delay(1000)),
// 1초 후에 0출력
sourceThree: interval(1000).pipe(take(1)),
// 1초 뒤 0, 2초 뒤 1 출력 (최종적으로 1이 남음)
sourceFour: interval(1000).pipe(take(2)),
// 5초 뒤에 resolve 값 출력
sourceFive: myPromise('RESULT')
]);
/*
* Output:
* [
* "Hello",
* "World",
* 0,
* 1,
* "Promise Resolved: RESULT"
* ]
*/
const subscribe = example.subscribe(val => console.log(val));
참고
https://github.com/ReactiveX/rxjs/blob/master/src/internal/observable/forkJoin.ts
'programming > RxJS' 카테고리의 다른 글
toPromise? firstValueFrom? lastValueFrom? (0) | 2023.02.04 |
---|---|
fromEvent() (0) | 2019.07.20 |
데이터 가공해서 출력하기 (pluck operator) (0) | 2019.07.12 |
RxJS를 이용하여 HTTP 통신 개선하기 (0) | 2019.05.27 |