0

我有一个返回 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。任何帮助表示赞赏。谢谢!

4

1 回答 1

0

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

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

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

于 2021-11-30T16:07:35.587 回答