2016-06-13 3 views
0

私の問題は非常に単純ですが、私はRXJSの別のチュートリアルの答えを見つけることができませんでした。 私は、サーバーコールを行う関数を持つストアを持っています。この関数は、起動時にはコンポーネントから呼び出され、後では更新が必要になると呼び出されます。 fromEventは、HTML要素からkeyBoardまたはMouseイベントを観察するために使用されるため、この関数をObservableにします。RXJSで関数呼び出しをストリームから外す

どのように私は、各呼び出しで約束を返すストリームにその機能を有効にすることができます。

this.getData(args) <Promise> 

私の店では、そのストリームを購読して、各getData呼び出しでアプリケーション状態を更新したいと思っています。

this.getData.flatMap(promise => promise) 
.subscribe(result => this.state.data = result) 
+0

基本的に '.defer'が必要ですか? –

+0

いいえ、deferは、あなたがそれを購読する機能ASAをトリガーしているようですが、マウスをクリックまたは移動したときにfromEventのようにthis.getData()が呼び出されたときにのみストリームをトリガーするストリームがあります。それを購読すれば、私はthis.getData(args)を使用してその動作を望みます – Duduche

答えて

1

[OK]を、私は私が探していたもの、これはあなたが特定の関数の呼び出しを観察したいとき、RXJS

を持つ任意の愚かな初心者に便利なことRx.observableのまわりでそれをラップすることができました。次のように作成します。

Rx.Observable.create(obs=>{ 
    this.getRestaurant = (variableString, variables, fragments) => { 
     const query = this.getQuery(variableString, fragments) 
     obs.onNext(graphQLFetcher({query: query, variables: variables})) 
    } 
    }) 
    .flatMap(promise => Rx.Observable.fromPromise(promise)) 
    .subscribe(result => { 
    console.log(result) 
    }); 

this.getRestaurant(args)コールに基づいた素敵なストリームが作成されました。

+0

私はRxで新しく、これを単独で把握するのに数時間を費やしていますが、このunswerが私を大いに助けました!ありがとう! –

関連する問題