У меня есть несколько проблем, связанных с Http.post и Http.get с Observables. Я студент, и я пытаюсь написать простой WebApp и Server.Угловая 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();
}
Я пытался понять, учебники с наблюдаемыми характеристиками, но я не нашел как размещать данные на сервере без подписки на Observable.
Благодарим за помощь!
Это была моя мысль, но как вы объясните. Это, если я попробую метод getdata() без цикла if несколько раз. У меня есть несколько служб, которые пытаются получить данные everey 3 секунды? Я попробовал его в браузере, и это было именно так ... –
Поскольку интервал генерирует новый вызов каждые 3000 мс. Либо сделайте так: 'Observable.timeout (3000)' (одна временная задержка) или 'Observable.interval (3000) .take (1)' – Meir
Но это не сработает. Возможно, мое объяснение недостаточно. У меня есть WebApp и сервер. WebApp работает в браузере и на сервере на VisualCode. На сервере меняют данные, принадлежащие автомобилю (манекен). У меня есть flipswitch на html из WebApp, который должен включать и отключать связь между сервером и webapp. Если я включу флипсвитч, я подпишусь на наблюдаемый, который получает данные с сервера каждые 3 с. Если я переключу его на наблюдаемый, он должен быть канцелярным. Без цикла if я создавал бы новый наблюдаемый каждый раз. Есть ли другой способ. –