Как получить Observable из часов etcd v2
_watch(key: string): Observable<AxiosResponse<any>> {
let url: string = `${this.buildUrl(key)}?wait=true&recursive=true`;
return this.httpService.get(url)
.pipe(
map((resp) => resp),
tap(data => console.log(data))
)
}
watch(key: string) {
this._watch(key).subscribe({
next: (v) => console.log(v),
error: (err) => {
if (!err.response) return new EtcdConnectionError();
let data = err.response.data;
switch (data.errorCode) {
// https://etcd.io/docs/v2.3/errorcode/
case 100:
return new EtcdNotFoundError(key);
default:
return new EtcdCommonError(data.message);
}
},
complete: () => console.info('complete')
})
}
Я смутно понимаю, как взаимодействовать с Observable, буду признателен, если подскажете, как разобраться подробнее, базовую документацию читал.
Код работает +/- вот так:
- запрос отправлен
- если есть изменения приходит ответ и так по кругу
что мне сделать, чтобы получить периодический статус, или в чем моя ошибка?
УПД
watch(key: string) {
return this._watch(key).subscribe({
Я забыл указать
return
и помучился с этим днем))))))))))))))))))))
1 ответ
Вы делаете http-запрос к etcd api. Когда есть ответ, вы получаете ответ через
next
функция. Затем наблюдаемое завершается.
Вы хотите периодически опрашивать API и записывать результаты в наблюдаемое?