たとえば、観測可能なfrom(['a', 'b'])
がある場合、[0, 'a']
と[1, 'b']
を放出する観測値を取得する方法はありますか?同期オブザーバブルを列挙する方法は?
私はfrom('a', 'b').pipe(zip(range(0, Number.POSITIVE_INFINITY)))
を試してみましたが、これは無限ループを作成します:あなたは、コンソールでRx.Observable.from(['a', 'b']).zip(Rx.Observable.range(0, Number.POSITIVE_INFINITY)).do(console.log).subscribe()
をしようとした場合(ヒント:ページhttp://reactivex.io/rxjs/manual/overview.htmlは、Rxはすでに輸入している)、これは、ページが(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 ]))
);
それとも、オブジェクトを発するようにしたい場合:それは