使用RXJS从函数调用中创建流

时间:2016-06-13 16:38:05

标签: javascript rxjs mobx

我的问题非常简单,但我可以在RXJS的不同教程后找到答案。 我有一个商店,我有一个服务器调用的函数,这个函数是从我的组件调用,在启动时和稍后需要更新。 我希望该函数是一个Observable,因为fromEvent用于从HTML元素中观察keyBoard或Mouse事件。

如何将该功能转换为Stream,在每次通话时返回一个承诺。

this.getData(args) <Promise>

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

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

1 个答案:

答案 0 :(得分:2)

好的,我找到了我想要的东西,这对任何愚蠢的初学者来说都很方便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)调用的流。