2

我的问题很简单,但是在 RXJS 上的不同教程之后我找不到答案。我有一个商店,其中我有一个进行服务器调用的函数,这个函数是在我的组件中直接调用的,在启动时以及稍后需要更新时。我希望该函数成为 Observable,因为 fromEvent 用于从 HTML 元素观察键盘或鼠标事件。

我怎么能把这个函数变成一个 Stream 在每次调用时返回一个承诺。

this.getData(args) <Promise>

问题是,我希望我的商店订阅该流并在每次 getData 调用时更新我的​​应用程序状态,看起来像这样。

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

1 回答 1

4

好的,我找到了我要找的东西,这对于任何使用 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 回答