私はアプリにジオロケーションを追加しています。ユーザーが実際に場所をリクエストする前に、観測可能なGeolocation.watchPostion()
を開始する必要があります。ユーザアクションに応じてObservableのサブスクリプションを変更するにはどうすればよいですか?
私はインスタンス変数を作成
private locationObserver = (stub observer);
private locationSubscription;
と
this.locationSubscription = Geolocation.watchPosition().subscribe(
next => this.locationObserver.next(next),
err => this.locationObserver.error(error),
comp => this.locationObserver.complete(complete)
)
を行い、その後、いくつかの後の時点で、次を呼び出すためのアイデアを持っていました。
onRequestLocation(){
this.locationObserver = Observer.create(
location => {
this.doMyStuff(location);
this.locationSubscription.unsubscribe();
}
)
}
ただし、これは正しい方法ではありません。これは悪いですか?
私の目標は、Geolocation.watchPosition()
を開始してから、ユーザーイベントに応答して何かを開始することです。また、ユーザイベントの後にタイムアウトイベントが5秒間発生するようにしたいと思います。ここで
はまだ右感じていないもう一つの可能性である:
私はインスタンス変数
private userEventHasOccured
private locationSubscription
を作り、また
this.locationSubscription = Geolocation.watchPosition().subscribe(
next => {
if (userEventHasOccured) {
this.doMyStuff(next);
this.unsubscribeLocation();
}
}
)
public unsubscribeLocation() {
this.locationSubscription.unsubscribe();
}
と
onUserEvent(){
this.userEventHasOccured = true;
}
を行い、あなたはですeサブスクリプションを終了するのに邪魔になることはありませんか?
解決策(コード)を詳しくご記入ください。この現在の答えは、実際には十分な情報を提供していません。ありがとう! :) – Alex
もちろん。私のソリューションは、同じ観察可能なもの、つまりそれを「開始」するものと、ユーザーの入力に応答するものとの2つのサブスクリプションを作成し、それらの両方をサブスクライブ解除してオブザーバブルを「停止」させることになりました。 –
よく見えます!あなたは+1を得る;) – Alex