0
私は、 ObservablesでHttp.postとHttp.getに関するいくつかの問題があります。私は学生で、シンプルなWebAppと サーバーを作成しようとしています。角2、観測可能:http.post、http.get
ボタンを押すと、私のサーバーにブール値を送信したいと思います。ポスト のプロセスは機能しますが、私がボタンを押すたびに、私はオブザーバブルに別の時間を購読します。私はhttp.getメソッドで同じ問題を抱え、このコードの問題を解決しました。
getdata() {
if(this.subscribtion2 === null){
this.isValid = false;
this.subscribtion2 = this.service.get2().subscribe(
daten => {
this.jsonobj = daten;
this.message =
[
this.jsonobj.data.message1,
];
console.log('subscribe')
;
this.myModelneu = this.message[0];
},
err => this.handleError(err),
() => console.log('Simple GET completed')
);
}else
{
this.isValid = true;
console.log('unsubscribe')
this.subscribtion2.unsubscribe();
this.subscribtion2 = null;
}
}
get2()メソッドは別のクラスにあります。
get2() {
return Observable.interval(3000)
.switchMap(() => this.http.get('http://127.0.0.1:3000/daten/2'))
.map(res => res.json())
}
私はそれが一般的な方法だとは思わないが、別のものを見つけることはできない。 マイhttp.postの外観はこれを好き:
post(json: boolean) {
console.log('post executed');
console.log(JSON.stringify(json));
return this.http.post('http://127.0.0.1:3000/login', { json })
.subscribe();
}
私は観測とチュートリアルを理解しようとしたが、私は観察可能な契約をしなくても、サーバー上のデータをポストする方法 を見つけることができませんでした。
ありがとうございました!
これは私の考えでしたが、どのように説明しますか? ifループを何度も使わずにgetdata()メソッドを試してみてください。私は3秒間データevereyを取得しようとする複数のサービスがありますか?私はブラウザで試してみましたが、それはちょうどそのようなものでした... –
間隔は3000ミリ秒ごとに新しい呼び出しを生成するためです。 'Observable.timeout(3000)'(1回の遅延)または 'Observable.interval(3000).take(1)' – Meir
これはうまくいきません。おそらく私の説明は十分ではないでしょう。 WebAppとサーバーがあります。 WebAppは、ブラウザおよびVisualCode上のサーバーで実行されます。サーバーでは、私は車に属するデータを変更しています(ダミー)。私はウェブアプリケーションからのhtml上のフリップスイッチを持っています。これは、サーバとWebアプリケーションの間の通信をオンまたはオフにする必要があります。フリップスイッチをオンにすると、私は3秒ごとにサーバーからデータを受け取るオブザーバブルを購読します。私がそれを切り替えると、observableはキャンセルされるべきです。 ifループがなければ、毎回新しい観測値を作成します。別の方法がありますか? –