2017-11-04 3 views
1

typecriptで条件付きサブスクリプションの登録を解除するにはどうすればよいですか。角4の条件を使用してサブスクリプションを解読する方法

Angular4で$ http.getメソッドを購読しましたが、サーバーから受信した "no_more_data"の後に購読を解除したいと考えています。私にそれをする方法を教えてください。あなたは"no_more_data"が到着したときに近くに自動的に流れを作るためにtakeWhile演算子を使用することができます

私はtakewhileなどtakeuntil、同様に知っているすべてのメソッドは、この観察可能

getFiles(): any { 
    return http.post 
} 

getFiles(). // here no takeWhile and takeUntil are getring allowed then how do I unsubscribe. 
+0

これまでに試したことを正確に示すことはできますか? –

+0

'$ http.get'とは何ですか? AngularJSを使用していますか?あなたの質問には角度が付けられています。 –

+0

申し訳ありませんが、最近Angular 1の後にAngular 4を使い始めましたので、間違って$ httpをタイプしました –

答えて

0

ここにはいくつかのものがあります:

最初に、Httpの角度から来る観測値は、単一のHttp要求を行います。したがって、あなたがもちろん繰り返されている何かからそれを起動している場合を除き、単一のHttp呼び出しであれば、登録を解除する必要はありません。

第2に、あなたが言う部分、return http.postは明らかに不完全です。私はこれが質問の投稿のためだけであるのか、あなたの本当のコードがそれのようなものなのか分かりません。あなたの問題は、それを呼び出す代わりに関数http.postを返すことかもしれません。

実際のコード1)がメソッドhttp.post(/*some arguments here /*)を呼び出し、もちろん2)その呼び出しの結果を返します。戻り値の型がObservableであることを確認するために、http.post()を呼び出すメソッドにカーソルを合わせます。

最後に、takeWhileまたはtakeUntilがまだ見つからない場合は、別の潜在的な小さな問題があります。単純にインポートされない可能性があります。 import 'rxjs/add/operator/takeWhileまたは `` rxjs/add/operator/takeUntil``をそれを使用するファイルの先頭に追加する必要があります。

2

には使用できません。

$http.get(...) 
.map(...) 
.takeWhile((e) => e != "no_more_data") 
.subscribe(...) 

も参照してくださいtakeWhile

関連する問題