我有一个服务返回Observable的一个令牌和许多订阅者调用此服务并尝试获取此令牌。 如果我已经在内存中有令牌,我只返回它 - 如果没有 - 发出新请求,保存令牌并返回Observable这个令牌。
一次性多次服务调用的问题。因此,一些订阅者收到了不同的令牌。也许在RxJs中存在一些方法,用于在每个请求之后创建一些查询,等待响应并向所有订阅者发送值?
我会非常适合任何帮助。感谢。
答案 0 :(得分:1)
使用publishLast
创建一次observable以使其成为"可共享"。即使令牌已经可用,也要将此可观察性提供给所有呼叫者。
var _tokenObservable;
var _subscription;
getToken() {
if (!_tokenObservable) {
// first time in, create the observable
_tokenObservable = makeCallToGetTokenObservable().publishLast();
// start the request
_subscription = shared.connect();
}
return _tokenObservable;
}