2017-11-15 9 views
2

「lettable」演算子があるので、Observableを別のものから作成するにはどうすればよいですか?RxJS 5.xでfromを使用してObservableを作成する最も良い方法は?

私がやろう:

import {Observable} from 'rxjs/Observable' 
 
const source = Observable.from(someOtherStream)

fromは今個別にインポートする必要が何か他のものであるので、私は、理にかなってエラーObservable.from is not a functionを取得。

私は原因が原型の問題にはもう

import 'rxjs/add/observable/from'を行うにはしたくありません。私がやってしまった何を

た:

import { Observable } from 'rxjs/Observable' 
 
import { from } from 'rxjs/observable/from' 
 

 
const myNewStream = from.call(
 
    Observable, 
 
    someOtherStream 
 
)

しかし、これは本当に私にはいくつかの理由で "ハック" 感じています。誰もこれについてもっと良い方法を持っていますか?

+0

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.htmlあなたは[バインド演算子を使用することができ –

+0

](https://babeljs.io/docs/plugins/transform-function-bind/)、Observable :: from(someOtherStream)を書くとかなりいいです。 – mpen

答えて

4

レターテーブルがrxjs/operatorshere's the write up on itの後ろにあります。

fromの場合、Observableをインポートせずにインポートできます。 fromを使用して

import { from } from 'rxjs/observable/from'; 

const prom = new Promise(res => setTimeout(
() => res('promise'), 3000 
)); 

from(prom).subscribe(x => console.log(x)); 

webpackbin example

この方法は、あなたは、賃貸可能事業者にpipe()することができます。

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

const prom = new Promise(res => setTimeout(
() => res('promise'), 3000 
)); 

from(prom).pipe(
    map(x => x.split('').reverse().join('')) 
).subscribe(x => console.log(x)); 

webpackbin example

+0

それで 'Observer'コンテキストを与える必要はありませんか? – RavenHursT

+1

正しい場合は、https://www.webpackbin.com/bins/-KyxZ7nKTBlSnkWyCDjG – subhaze

+0

パーフェクトではなく、lettablesにパイプすることができます。素晴らしい仕事をした。ありがとう! – RavenHursT

0

私は、これはfromが何を誤解されると思います。それは、 "ストリーム"(Observable、Promise、array、...)をとり、そこからObservableを作成する単なる関数です。

これはあなただけで、他の関数のようにそれを使用することを意味します:

import { from } from 'rxjs/observable/from' 

from(someOtherStream).pipe(...).subscribe(...) 
関連する問題