2

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

その関数を各呼び出しで約束を返すストリームに変えるにはどうすればよいでしょうか。

this.getData(args) <Promise>

問題は、ストアがそのストリームをサブスクライブし、getData 呼び出しごとにアプリケーションの状態を更新することです。

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

1 に答える 1

4

OK、探していたものを見つけました。これは、RXJS の愚かな初心者にとって便利です。

特定の関数の呼び出しを観察したいときはいつでも、次のように Rx.observable.create をラップします。

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) 呼び出しに基づく素敵なストリームができました。

于 2016-06-14T15:02:12.887 に答える