我的问题非常简单,但我可以在RXJS的不同教程后找到答案。 我有一个商店,我有一个服务器调用的函数,这个函数是从我的组件调用,在启动时和稍后需要更新。 我希望该函数是一个Observable,因为fromEvent用于从HTML元素中观察keyBoard或Mouse事件。
如何将该功能转换为Stream,在每次通话时返回一个承诺。
this.getData(args) <Promise>
问题是,我希望我的商店订阅该流并在每个getData调用上更新我的应用程序状态,这看起来就是这样。
this.getData.flatMap(promise => promise)
.subscribe(result => this.state.data = result)
答案 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)调用的流。