2016-06-13 6 views
0

내 문제는 간단하지만 RXJS의 다른 튜토리얼에 따라 답변을 찾을 수 없습니다. 서버 호출을하는 함수가있는 저장소가 있습니다.이 함수는 시작시에 구성 요소에서 바로 호출되며 이후에는 업데이트가 필요합니다. fromEvent는 HTML 요소에서 keyBoard 또는 Mouse Event를 관찰하는 데 사용되므로 해당 함수를 Observable로 지정하려고합니다.RXJS를 사용하여 함수 호출을 스트리밍 아웃

어떻게 그 함수를 각 호출에서 약속을 반환하는 스트림으로 바꿀 수 있습니까?

this.getData(args) <Promise> 

사실, 내 스토어에서 해당 스트림을 구독하고 각 getData 호출에서 응용 프로그램 상태를 업데이트해야합니다.

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

기본적으로'.defer'를 원하십니까? –

+0

아니요, defer가 ASA에 가입 한 함수를 트리거하는 것처럼 보입니다. 내 스트림은 this.getData()가 호출 될 때만 결과를 트리거합니다. fromEvent는 마우스를 클릭하거나 이동할 때 이벤트가 트리거되고 그것을 구독 할 때, 나는 this.getData (args)를 사용할 때 그 행동을 원한다. – Duduche

답변

1

좋아, 난 당신이 특정 함수에 대한 호출을 관찰 Rx.observable 주위를 포장 할 때마다이 RXJS

어떤 바보 초보자에게 유용 할 수 있습니다, 무엇을 찾고 있었다 발견했다.

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 (인수) 호출을 기반으로 좋은 흐름을 다음과 같이 만듭니다.

+0

나는 Rx에서 새롭다. 그리고 이것을 혼자 생각하기 위해 몇 시간을 보낸다. 그러나이 unswer는 나를 많이 도왔다! 감사! –