0
我有几个关于Http.post和Http.get与 Observable的问题。我是一名学生,我正在尝试编写一个简单的WebApp和一个服务器。Angular 2,Observable: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()方法。我有多个服务试图让数据everey 3秒?我在浏览器中试过它,它完全是这样的... –
因为间隔每3000毫秒产生一个新的呼叫。可以这样做:'Observable.timeout(3000)'(一次延迟)或'Observable.interval(3000).take(1)' – Meir
但是这是行不通的。也许我的解释不够好。我有一个WebApp和一个服务器。 WebApp在VisualCode上的浏览器和服务器上运行。在服务器上,我改变了属于汽车(虚拟)的数据。我在WebApp的html上有一个flipswitch,可以打开和关闭服务器和webapp之间的通信。如果我打开翻页开关,我会订阅一个每3秒从服务器接收一次数据的观察器。如果我切换它的observable应该是canceld。没有if循环,我会每次创建一个新的可观察对象。有没有另一种方法。 –