Rx js多个订阅者查询

时间:2016-06-30 10:42:42

标签: javascript rxjs

我有一个服务返回Observable的一个令牌和许多订阅者调用此服务并尝试获取此令牌。 如果我已经在内存中有令牌,我只返回它 - 如果没有 - 发出新请求,保存令牌并返回Observable这个令牌。

一次性多次服务调用的问题。因此,一些订阅者收到了不同的令牌。也许在RxJs中存在一些方法,用于在每个请求之后创建一些查询,等待响应并向所有订阅者发送值?

我会非常适合任何帮助。感谢。

1 个答案:

答案 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;
}