2017-12-20 25 views
2

예를 들어, 관측 가능 범위가 from(['a', 'b']) 인 경우, [0, 'a'][1, 'b']을내는 관측 영역을 얻는 방법은 무엇입니까?동기화 관찰 가능 항목을 열거하는 방법은 무엇입니까?

내가 from('a', 'b').pipe(zip(range(0, Number.POSITIVE_INFINITY)))을 시도했다, 그러나 이것은 무한 루프를 만듭니다 콘솔에서 (팁 : http://reactivex.io/rxjs/manual/overview.html이 수신 이미 가져온 페이지) Rx.Observable.from(['a', 'b']).zip(Rx.Observable.range(0, Number.POSITIVE_INFINITY)).do(console.log).subscribe()을하려고하면,이 페이지가 중단 될 것입니다합니다 (range 무기한 값을 추진하고있다) . 필자의 맥락 (IndexedDB 작업)에서는 비동기식 스케줄러를 사용할 수 없으며 어쨌든 성능면에서 이해가되지 않습니다.

나는 사용자 정의 연산자

import { Observable } from 'rxjs/Observable'; 
import { map } from 'rxjs/operators'; 

export const enumerate = <T>(source: Observable<T>) => { 
    let index = 0; 
    return source.pipe(map(source => ({ value: source, index: index++ }))); 
}; 

을 만들어이 문제를 해결했다하지만 간단한 해결책을 놓친 거지?

from(['a', 'b']).pipe(
    map((value, index) => [ index, value ])) 
); 

또는 개체를 방출 할 경우 : 그것은

답변

3

많은 사업자는 다른 매개 변수로 콜백 함수에 전달되는 당신을위한 index 카운트 계속 ... RxJS는이 잡았다을 가지고 단지 이상하다 :

map((value, index) => ({ index, value }))