如何在Rx Observable上"等待"以获得特定值



我想等待一个可观察到的对象有一个定义值,然后再继续。

我尝试了以下操作,但它不起作用,即使myObservable$是用值实例化的

await lastValueFrom(this.myObservable$.pipe(filter((event) => (event == 'something' ? true : false))))

上下文

在angular中,在iFrame中加载应用程序时,我需要一个可能存在于本地或由父级设置的令牌。

如果这是由父级设置的,我希望我的警卫等待,直到令牌有值为止。

变通办法

我只为此目的创建了一个可观测值,所以我可以使用await lastValueFrom(this.myObservable$),这是有效的,但我只是想知道是否可以等待特定的值。

为了让lastValueFrom发射任何东西,它的可观测源必须完成(否则,就没有"最后一个"值(。

您可以在您的过滤条件后使用take(1)强制完成:

await lastValueFrom(this.myObservable$.pipe(
filter(event => event === 'something'),
take(1)
));

当然,使用takeWhile。

await lastValueFrom(this.myObservable$.pipe(takeWhile(val => val != 5, true)))

相关内容

  • 没有找到相关文章