【问题标题】:One Observer not being created, but another identical one is未创建一个观察者,但另一个相同的观察者是
【发布时间】:2016-06-17 01:45:33
【问题描述】:

rxjs 与 Angular 2 RC.1 一起使用,我正在创建一些 Observer's。我在服务中有以下内容:

taxRates$:  Observable<TaxRate[]>;
taxTables$: Observable<TaxTable[]>;
private _taxRatesObserver:  Observer<TaxRate[]>;
private _taxTablesObserver: Observer<TaxTable[]>;

constructor(private http: HttpService) {
    this.taxRates$ = new Observable<TaxRate[]>(observer =>
        this._taxRatesObserver = observer
    ).share();

    this.taxTables$ = new Observable<TaxTable[]>(observer =>
        this._taxTablesObserver = observer
    ).share();
    // more stuff here
}

_taxRatesObserver 已正确创建,但 _taxTablesObserver 未正确创建。当我检查开发工具时,我看到了:

_taxRatesObserver:Subscriber http:HttpService taxRates$:RefCountObservable taxTables$:RefCountObservable

我希望还能看到_taxTablesObserver:Subscriber,但如果我通过控制台记录它,它总是显示为undefinedTaxTable,如果重要的话,看起来像这样:

export class TaxTable { constructor( public id: number, public name: string, public description: string) {} }

【问题讨论】:

    标签: angularjs angular rxjs


    【解决方案1】:

    来自文档:

    订阅 Observable 最初订阅时调用的函数。

    _taxRatesObserver 和 _taxTablesObserver 对应订阅 taxRates$ 和 taxTables$ 后初始化。

    taxTables$ 很可能没有订阅者。

    【讨论】:

    • 我注释掉了_taxRatesObserver 的订阅者,它仍然显示为对象而不是未定义。
    • 尝试添加调试器语句或console.trace()来查找调用者
    • 对不起,我不明白你的建议,@kemsky。
    • 好的,相反,尝试在初始化后立即订阅 taxTables$ 并检查是否赋值。
    • 不是,我已经这样做了。尽管如此,我并没有对taxRates$ 这样做,它工作得很好。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 2019-08-22
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多