我希望有一个可观察的行为,就像一个承诺



var promise = http.get().toPromise();给出一个执行一次的承诺。

因此,无论调用多少次promise.then(),http请求都只执行一次。

我怎样才能用可观察量实现相同的目标?:var observable = http.get().???这样obversable.subscribe()只执行一次http请求?

你可以像这样使用以下 rxjs 运算符 'take' 导入运算符

import { take } from 'rxjs/operators';

并像这样使用它

this.http.get(`${this.url}/${agentId}/intents/${intentId}`)
.pipe(take(1),
catchError(error => Observable.throw(error)));

但这只会发出一次单个值,即最新值,如果再次调用此函数,不会阻止 Observable 调用请求。

以下代码做到了: 从 'rxjs/operators ' 导入 { shareReplay }

;this.http.get("xxx").pipe(shareReplay(1));

相关内容

最新更新