나는 Http.post와 Http.get에 관해서는 Observables로 몇 가지 문제가있다. 저는 학생이고 간단한 웹 애플리케이션과 서버를 작성하려고합니다. 서버.각도 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();
}
내가 Observables은 함께 튜토리얼을 이해하려고 노력하지만 난 방법 관찰에 가입하지 않고 서버에 데이터를 게시하는 를 찾지 못했습니다.
도움 주셔서 감사합니다.
그건 내 생각 이었지만 어떻게 설명하니? if 루프를 여러 번 사용하지 않고 getdata() 메서드를 사용하면됩니다. 3 초 동안 데이터를 얻으려고하는 여러 서비스가 있습니까? 브라우저에서 시도했는데 정확하게 그랬습니다. –
간격이 매 3000ms마다 새로운 호출을 생성하기 때문에. "Observable.timeout (3000)'(1 시간 지연) 또는"Observable.interval (3000) .take (1) " – Meir
그러나 이것은 작동하지 않습니다. 아마도 제 설명으로는 충분하지 않을 수도 있습니다. 나는 웹 애플리케이션과 서버를 가지고있다. 웹 애플리케이션은 VisualCode의 브라우저 및 서버에서 실행됩니다. 서버에서 나는 자동차 (더미)에 속하는 데이터를 변경했다. WebApp에서 html로 flip 스위치를 사용하면 서버와 webapp 간의 통신을 켜고 끕니다. flipswitch를 켜면 3 초마다 서버로부터 데이터를받는 observable을 구독합니다. 만약 내가 그것을 관찰 할 수 canceld 취소해야합니다. if 루프가 없으면 매번 새로운 관측 가능 항목을 생성합니다. 다른 방법이 있습니까? –