角度2,可观察:http.post,http.get
我有一些关于Http.post和Http.get的问题 可观察到的。我是一名学生,我正在尝试写一个简单的网络应用程序和 服务器 如果我按下按钮,我想在我的服务器上发布一个布尔值。邮报 这个过程确实有效,但每次我按下按钮,我都会订阅另一次可观察的时间。我的http.get方法也有同样的问题,并用这段代码解决了这个问题角度2,可观察:http.post,http.get,http,angular,typescript,observable,Http,Angular,Typescript,Observable,我有一些关于Http.post和Http.get的问题 可观察到的。我是一名学生,我正在尝试写一个简单的网络应用程序和 服务器 如果我按下按钮,我想在我的服务器上发布一个布尔值。邮报 这个过程确实有效,但每次我按下按钮,我都会订阅另一次可观察的时间。我的http.get方法也有同样的问题,并用这段代码解决了这个问题 getdata() { if(this.subscribtion2 === null){ this.isValid = false; this.su
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();
}
我试图通过观察来理解教程,但没有找到答案
如何在服务器上发布数据,而不订阅可观察的
谢谢你的帮助 http调用,特别是
get
和post
返回一个可观察的结果,因此不需要取消订阅。完成后,订阅将终止。http调用,特别是get
和post
返回一个完成结果的可观察对象,因此您无需取消订阅。完成后,订阅将终止。这正是我的想法,但您如何解释。如果我多次尝试不使用if循环的getdata()方法。我有多个服务试图每3秒钟获取一次数据?我在浏览器中尝试过,结果完全一样……因为间隔每3000毫秒生成一个新的调用。可以这样做:Observable.timeout(3000)
(一个时间延迟)或Observable.interval(3000)。取(1)
,但这不起作用。也许我的解释不够好。我有一个WebApp和一个服务器。WebApp在VisualCode上的浏览器和服务器中运行。在服务器上,我有属于汽车(虚拟)的更改数据。我在WebApp的html上有一个flipswitch,可以打开和关闭服务器与WebApp之间的通信。如果我打开flipswitch,我订阅一个observable,它每3秒从服务器接收一次数据。若我切换它,那个么可观察的部分应该被取消。如果没有if循环,我每次都会创建一个新的可观察对象。还有别的方法吗?你想要一个有开关的间隔触发器?为什么不创建一个间隔并过滤它呢?可观察的.interval(3000).filter(v=>fetchData).switchMap(…)。这样,如果您关闭fetchData,调用将不会被分派。我不太习惯于处理可观察对象,也是一个新手,对此表示抱歉。。。。fetchData是如何连接到http.get的?如果我“关闭”fetchData,oberservable是否被取消?我该如何做…:)?这正是我的想法,但你怎么解释呢。如果我多次尝试不使用if循环的getdata()方法。我有多个服务试图每3秒钟获取一次数据?我在浏览器中尝试过,结果完全一样……因为间隔每3000毫秒生成一个新的调用。可以这样做:Observable.timeout(3000)
(一个时间延迟)或Observable.interval(3000)。取(1)
,但这不起作用。也许我的解释不够好。我有一个WebApp和一个服务器。WebApp在VisualCode上的浏览器和服务器中运行。在服务器上,我有属于汽车(虚拟)的更改数据。我在WebApp的html上有一个flipswitch,可以打开和关闭服务器与WebApp之间的通信。如果我打开flipswitch,我订阅一个observable,它每3秒从服务器接收一次数据。若我切换它,那个么可观察的部分应该被取消。如果没有if循环,我每次都会创建一个新的可观察对象。还有别的方法吗?你想要一个有开关的间隔触发器?为什么不创建一个间隔并过滤它呢?可观察的.interval(3000).filter(v=>fetchData).switchMap(…)。这样,如果您关闭fetchData,调用将不会被分派。我不太习惯于处理可观察对象,也是一个新手,对此表示抱歉。。。。fetchData是如何连接到http.get的?如果我“关闭”fetchData,oberservable是否被取消?我该如何做…:)?