반응형
순차적으로 관찰 가능성과 하나의 결과 도출
다음 기능을 사용하여 병렬로 실행하는 일련의 관찰 가능:
let observables: Observable<any>[]
Observable.forkJoin(observables)
그러나 이것은 완벽하게 작동하지만, 나는 순차적으로 관찰 가능성의 배열을 실행해야 하며, 마지막 관찰 가능이 완료된 경우에만 하나의 결과를 내보내야 한다.그때 나는 사용하려고 했다.
Observable.concat(observables)
그러나 이것은 내가 포크조인을 사용할 때 얻을 수 있는 하나의 결합 결과뿐만 아니라 여러 개의 결과를 반환한다.그래서 나는 사실 둘의 조합이 필요해.
다음과 같이 순차적으로 실행하기 위해 축소 기능을 사용하려고 노력했다.
return observables.reduce((previous, current) => {
return previous.flatMap(() => current);
}, Observable.empty());
그러나 이 해결책으로 관찰할 수 있는 것은 전혀 실행되지 않는다.
당신의 것을 가정하면.observables
배열이 아닌 단수 값을 발산하여 다음과 같은 방식으로 현재 접근 방식을 변경할 수 있다.
return Observable.concat(...observables).reduce((acc, current) => [...acc, current], []);
또는 더 짧은 시간:
return Observable.concat(...observables).toArray();
배열 값을 내보내는 경우 다음을 수행할 수 있다.
const source = Observable.concat(...observables).flatMap(list => list).toArray();
조타로서.톨레도 또는 마테우스 위트코프스키가 그들의 대답에서 RxJS의 새로운 구문을 통해 다음과 같이 할 수 있다는 것을 보여주었다.
return concat(...observables).pipe(toArray());
사용할 수 있다toArray()
연산자:
Observable.concat(observables).toArray().subscribe()
RxJS 문서에 명시된 바와 같이: "원소 시퀀스의 모든 요소를 포함하는 목록과 함께 단일 요소를 포함하는 관측 가능한 시퀀스"를 생성한다.
참조URL: https://stackoverflow.com/questions/48358769/sequentially-execute-observables-and-emit-one-result
반응형
'IT이야기' 카테고리의 다른 글
v-data-table에 클릭 이벤트를 추가하는 방법 (0) | 2022.04.01 |
---|---|
python Simple을 실행할 수 있는가?로컬 호스트에서만 HTTPServer를 사용하시겠습니까? (0) | 2022.04.01 |
Vue.js - 루트 요소가 v-for를 가질 수 없고 분할 래퍼가 필요한 이유 (0) | 2022.04.01 |
Python에서 XPath를 사용하는 방법? (0) | 2022.04.01 |
개체의 특성 나열 (0) | 2022.04.01 |