Rxjs : Observable.combineLatest 대 Observable.forkJoin
Observable.combineLatest
과의 차이점이 무엇인지 궁금 Observable.forkJoin
하십니까? 내가 볼 수있는 한, 유일한 차이점은 forkJoin
Observable이 완료 될 것으로 예상 combineLatest
하고 최신 값 을 반환한다는 것입니다.
forkJoin
모든 입력 관찰 가능 항목을 완료해야 할 뿐만 아니라 입력 관찰 가능 항목에 의해 생성 된 마지막 값의 배열 인 단일 값을 생성하는 관찰 가능 항목도 반환합니다. 즉, 관찰 가능한 마지막 입력이 완료 될 때까지 기다린 다음 단일 값을 생성하고 완료됩니다.
반대로, combineLatest
모든 입력 관찰 가능 항목이 적어도 하나의 값을 생성하면 입력 관찰 가능 항목이 수행 할 때마다 새 값을 생성하는 Observable을 반환합니다. 이것은 무한한 값을 가질 수 있고 완전하지 않을 수 있음을 의미합니다. 또한 입력 관찰 가능 항목이 값을 생성하기 전에 완료 할 필요가 없음을 의미합니다.
또한:
combineLatest (...)는 Observable을 순서대로 하나씩 실행합니다.
combineLatest
내부적으로를 사용합니다 concat
. 이는 다음으로 이동하기 전에 배열의 각 관찰 가능 항목에 대해 값을 얻어야 함을 의미합니다.
// partial source of static combineLatest (uses the rxjs/operators combineLatest internally):
// If you're using typescript then the output array will be strongly typed based on type inference
return function (source) { return source.lift.call(from_1.from([source].concat(observables)),
new combineLatest_1.CombineLatestOperator(project)); };
forkJoin (...)은 observable을 동시에 실행합니다.
소스 Observable이 3 개 있고 각각 실행하는 데 5 초가 걸리면 실행하는 데 15 초가 걸립니다 combineLatest
. 반면 forkJoin
들이 병렬로 실행는 5 초 정도 걸릴 수 있도록.
따라서 주문이 시행되지 않는 곳 forkJoin
과 다소 비슷 Promise.all(...)
합니다.
오류 처리 고려 사항 :
Observable 오류가 발생 combineLatest
하면 후속 항목이 실행되지 않지만 forkJoin
모두 실행 중입니다. 따라서 combineLatest
Observable의 '시퀀스'를 실행하고 결과를 모두 함께 수집하는 데 유용 할 수 있습니다.
고급 참고 : 소스 Observable이 이미 '실행 중'(다른 항목에 의해 구독 됨)이고 사용중인 share
경우이 동작이 표시되지 않습니다.
고급 참고 사항 : CombineLatest는 항상 각 소스의 최신 정보를 제공하므로 소스 관찰 가능 항목 중 하나가 여러 값을 방출하면 최신 정보를 얻을 수 있습니다. 각 소스에 대해 단일 값을 얻고 다음 소스로 이동하는 것이 아닙니다. 각 소스 관찰 가능 항목에 대해 '다음 사용 가능한 항목'만 가져 오도록해야하는 경우 .pipe(take(1))
입력 배열에 추가 할 때 소스 관찰 가능 항목에 추가 할 수 있습니다 .
forkJoin- 모든 Observable이 완료되면 각각에서 마지막으로 방출 된 값을 내 보냅니다 .
CombineLatest -Observable이 값을 방출 할 때, 각각의 최신 값을 방출합니다.
사용법은 매우 비슷하지만 forkJoin 과 달리 combineLatest 에서 구독 취소하는 것을 잊지 마십시오 .
참조 URL : https://stackoverflow.com/questions/41797439/rxjs-observable-combinelatest-vs-observable-forkjoin
'programing' 카테고리의 다른 글
Python의 단일 요소 목록에서 요소 만 가져 오나요? (0) | 2021.01.14 |
---|---|
순환 가져 오기가없는 Python 유형 힌트 (0) | 2021.01.14 |
마침표로 예외 메시지를 종료합니까? (0) | 2021.01.14 |
목록 상자를 목록에 바인딩 (0) | 2021.01.14 |
R로 SPSS 파일 읽기 (0) | 2021.01.14 |