小编Fre*_*ick的帖子

我应该在 BehaviorSubject 中使用 asObservable 吗?

我想知道BehaviorSubject.

据我所知:

asObservable 方法不仅将其转换为 Observable,还移除了 Observer 实现。因此,您无法在 asObservable() 返回的实例上调用 next、error & complete。

但以下内容也让我感到困惑:

通过仅公开 asObservable,您可以使用发出的值,但防止从创建此 BehaviorSubject 的服务外部更改 BehaviorSubject。为此,请使用 asObservable()。

这些定义有什么问题吗?

export class DataService {

    // usage I : using getter
    private messageSubject = new BehaviorSubject<any>(undefined);

    getMessage(): BehaviorSubject<any> {
        return this.messageSubject;
    }

    setMessage(param: any): void {
        this.messageSubject.next(param);
    }


    // usage II : using asObservable()
    private messageSubject = new BehaviorSubject<any>(undefined);
    
    currentMessage = this.messageSubject.asObservable();

    setMessage(param: any) {
    this.messageSubject.next(param)
    }
}
Run Code Online (Sandbox Code Playgroud)

上面哪种方法更好用,或者这两种方法的优缺点是什么?

更新:上次我最终确定了正确的用法如下:

// usage III : using @martin's approach:
private …
Run Code Online (Sandbox Code Playgroud)

javascript rxjs reactjs behaviorsubject angular

5
推荐指数
1
解决办法
930
查看次数

标签 统计

angular ×1

behaviorsubject ×1

javascript ×1

reactjs ×1

rxjs ×1