私はAngular 2とRxJSを使用しています。シンプルなobservablesシステムをセットアップするのに苦労しています。rxJS observableがsubscribeに達していない
私が理解する限り、演算子doは副作用に使用され、susbcribe()関数でobservableから返された結果を処理するコードを配置します。
私のコンポーネントは、システムにシステムの初期化を依頼します。 サービスはサーバーへの2回のhttp呼び出しを行い、コンポーネントを1つのストリームにまとめて加入し、すべての準備が整ったことを確認します。 サービス内の2つのhttp呼び出しのうちの1つが、サーバーから一定数の結果を取得しており、要求に応じてコンポーネントに配信されます。そのため、サービスはより多くのデータを必要とすると見て、サーバーに別の呼び出しを行います。
新しいhttpコールを作成する前に最初に元のhttpコールを登録解除する必要があると思うので、これは機能しませんでした(それは本当ですか?)。
これは私が持っているものです... getQuestionsメソッドで購読していないので動作しません。
コンポーネントでngOnInit() {
// show spinner
this.gamesService
.initializeGame()
.subscribe(data => {
console.log('Game initialized');
// remove spinner
});
}
サービスで
initializeGame(opponent_id: string): Observable<any> {
return Observable
.forkJoin([this.getQuestions(), this.newGame()]);
}
getQuestions(): Observable<any> {
// composes postData with POST parameters
this.questionsObservable = this.authHttp
.post(this.settings.authApiUrl, postData)
.map((response: Response) => response.json());
this.questionsObservable
.subscribe(data => {
// save data in the service, which will be consumed
})
.unsubscribe(); // do I need to unsubscribe?
return this.questionsObservable;
}
getQuestion(category: string): any {
// consume question by Component
if (no_more_questions_in_service) this.getQuestions();
return question;
}
ので、これが今取り組んでいます。 なぜ購読方法に達していないのですか?
これを達成するより良い方法はありますか? ありがとう
'authHttp'サービスがアイテムを発行する前に、あなたは' .unsubscribe() 'を退会します。 – martin