typescript - 如果超过一个,Angular2 Rxjs 观察者不会设置

标签 typescript angular observable rxjs observers

我正在尝试从构造函数中设置多个观察者。只有一个被设置,其余的没有被设置为 null(未更改)。

我不确定为什么要这样做。

export class gq {

    /**
     * This is observable data service https://coryrylan.com/blog/angular-2-observable-data-services
     */
    constructor(private api: Api)
    {
        this._ = {

            // just to define object here, else it will give error
            observer: {
                s: '', q: '', translation: '', translationLanguage: '', transliteration: '', r: '', content: ''
            },

            // observables
            observable: {
                s$:                 new Observable(observer => this._.observer.s = observer).share(),
                q$:                 new Observable(observer => this._.observer.q = observer).share(),
                translation$:           new Observable(observer => this._.observer.translation = observer).share(),
                translationLanguage$:   new Observable(observer => this._.observer.translationLanguage = observer).share(),
                transliteration$:       new Observable(observer => this._.observer.transliteration = observer).share(),
                r$:               new Observable(observer => this._.observer.r = observer).share(),
                content$:               new Observable(observer => this._.observer.content = observer).share(),
            }
        };


        console.log(this._.observer);
        console.log('triggered constructor');
    }
}

输出为

Object {s: Subject, q: "", translation: "", translationLanguage: "", transliteration: ""…}

正如你所看到的,它只设置了Subject的s,但其余的都是null

最佳答案

我不知道你的应用程序代码的其余部分,但你需要知道可观察量是惰性的。这意味着您在调用 Observable 构造函数时指定的回调仅在您订阅它时才会被调用。

也许您只订阅第一个可观察的内容,而不订阅其他内容......

关于typescript - 如果超过一个,Angular2 Rxjs 观察者不会设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401920/

相关文章:

typescript - 如何使用 redux-thunk 和 TypeScript 调度 ThunkAction

reactjs - useState 中具有泛型类型的 Typescript 函数,允许可为 null

angular - 如何在 Angular 2 模板中获取 localStorage 值

单个序列中的 Angular、ngrx/store、store select 和异步调用

javascript - 如何在 Observable 或 lodash 中使用 key 作为字符串从数组返回对象?

javascript - 在 Angular 8 中查找数组中的所有重复项

c# - 循环遍历响应对象 Angular

angular - Angular Intercept catcherror还捕获除404之外的其他错误,并阻止了应用程序按原样工作

java - 如何在 rxJava 中订阅不同的线程池

javascript - 在 knockout 中应用多个扩展器