尝试订阅 returns Angular 中的 Observable 的方法

Trying to Subscribe to a method that returns an Observable in Angular

我有一个方法 returns 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();
}

我 calling/subscribing 像这样使用 clockOut() 方法:

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

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

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

subject 不会 return 对新订阅的旧事件,您正在触发,next 在 returning observable 之前,因此这些事件尚未订阅。

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

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