返回条件 rxjs Observable 的更好方法

空设备

在下面的代码中,函数onReady1()onReady2()等价物是什么?有什么区别?有没有更好的方法来编写这个函数?

onReadyx()如果用户可用函数应该立即返回用户,否则它会等到可用时返回。在任何给定时间都会多次调用此函数。

export class UserService {
    private _user: IUser;

    private userObservable: Observable<IUser>;

    constructor(private http: Http) {
        this.userObservable = this.getCurrentUser();
    }

    public onReady1() {
        return Observable.create((observer: Observer<IUser>) => {
            if (this._user) {
                observer.next(this._user);
                observer.complete();
                return;
            }

            this.userObservable.subscribe(user => {
                this._user = user;
                observer.next(user);
                observer.complete();
            });
        });
    }

    public onReady2() {
        return Observable.defer(() => {
            if (this._user) {
                return Observable.of(this._user);
            }

            return this.userObservable.do(user => this._user = user);
        });
    }

    private getCurrentUser() {
        return this.http.get('/currentuser')
            .map(response => response.json() as IUser);
    }

}
朱莉娅·帕辛科娃

使用发布最后

export class Service {
  private sharedStream$: Observable< IUser>;

 constructor(public http: AuthHttp) {
   this.sharedStream$ = this. getCurrentUser()
    .publishLast()
    .refCount();
 }

 getUserObservable(): Observable< IUser> {
  return this.sharedStream$;
 }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

访问我从 RxJs Observable 方法调用返回的数据

RxJS / Observable flatMap可以返回Observable或数组

Angular / Rxjs条件嵌套的Observable

从rxjs导入Observable的最佳方法

返回满足条件后接收值的Rxjs Observable

RxJS Observable立即返回数据,为什么?

rxjs根据不同的答案返回不同的Observable

RxJs 'from' 返回类型未知的 Observable

返回 Observable<void> 类型的 rxjs 函数

rxjs中基于boolean observable的条件observable转换

在 Rxjs Angular 中將 Observable 的屬性返回為 Observable

实现 Observable 序列的更好方法

在haskell中迭代列表并返回条件为真的元素的最正确方法

为什么除了void之外,不允许返回条件属性方法

返回条件在钳工?

返回条件语句

从'rxjs / Observable'和'rxjs'导入Observable的区别

RxJs Observable的Observable Zip数组

无法导入Observable rxjs / Observable

Angular 动态过滤具有多个条件的 RxJS observable

RXJS 有条件地调用 observable

如果变量未定义,则RxJs返回Observable

rxjs observable.of(object)返回{“ _isScalar”:“”,“ value”:{},“ scheduler”:“”}而不是value

Angular 2和RxJS:如何更改返回Observable的HTTP调用

Observable.create 返回的函数如何/何时执行(rxjs)

如何在RxJS中返回存根Observable <void>

Angular2 rxjs缺少observable.interval方法

在RxJS Observable中“平化”数组的最佳方法

Rxjs,如何将回调方法链接到Observable?