【问题标题】:Trying to Subscribe to a method that returns an Observable in Angular尝试订阅在 Angular 中返回 Observable 的方法
【发布时间】:2022-01-07 08:15:52
【问题描述】:

我有一个返回 Observable 的方法:

clockOut(): Observable<boolean> {
    let isClockedOut = new Subject<boolean>();
    isClockedOut.next(false);

    // Some code to clock out and return x

    if (x === true) {
        isClockedOut.next(true);
    }

    return isClockedOut.asObservable();
}

我正在调用/订阅 clockOut() 方法,如下所示:

ngOnInit() {
    this.clockOut().subscribe((didClockOut: boolean) => {
        if (didClockOut === true) {
            // Do stuff
        }
    });
}

clockOut() 方法被调用,clockOut() 中的代码正常执行,但 .subscribe 之后的代码块没有被调用。几乎就像 clockOut() 没有返回 Observable?

我是 Angular 的新手,我使用 Observables/Subjects 的次数不多。任何帮助表示赞赏。谢谢!

【问题讨论】:

    标签: angular rxjs-observables rxjs-subscriptions


    【解决方案1】:

    subject 不会将旧事件返回到新订阅,您正在触发 next 在返回 observable 之前,因此这些事件尚未订阅。

    另外,这里不需要Subject,因为一切都是同步的。

    如果您想触发最后一个事件,您可以使用BehaviorSubject 而不是subject

    【讨论】:

    • 啊!我使用了 BehaviorSubject,它似乎有效。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    相关资源
    最近更新 更多