0
_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 交互,如果您能告诉我如何进一步了解它,我将不胜感激,我阅读了基本文档。

代码的工作原理是这样的:

  1. 发送请求
  2. 如果有变化,就会有响应,以此类推

我应该怎么做才能获得定期状态,或者我的错误是什么?

UPD

watch(key: string) {
        return this._watch(key).subscribe({

我忘了指出return这一天并遭受了痛苦)))))))))))))))))))))

4

1 回答 1

0

您向 etcd api 发出 http 请求。当有响应时,您会通过next函数收到响应。然后 observable 完成。

您想定期轮询 api 并将结果写入 observable 吗?

于 2022-02-17T09:28:31.403 回答