尝试订阅在 Angular 中返回 Observable 的方法
Posted
技术标签:
【中文标题】尝试订阅在 Angular 中返回 Observable 的方法【英文标题】:Trying to Subscribe to a method that returns an Observable in Angular 【发布时间】: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 的次数不多。任何帮助表示赞赏。谢谢!
【问题讨论】:
【参考方案1】:subject
不会将旧事件返回到新订阅,您正在触发 next 在返回 observable 之前,因此这些事件尚未订阅。
另外,这里不需要Subject
,因为一切都是同步的。
如果您想触发最后一个事件,您可以使用BehaviorSubject
而不是subject
【讨论】:
啊!我使用了 BehaviorSubject,它似乎有效。谢谢。以上是关于尝试订阅在 Angular 中返回 Observable 的方法的主要内容,如果未能解决你的问题,请参考以下文章