typescript 检查Angular Observable是否有数据

r1zk6ea1  于 2023-04-07  发布在  TypeScript
关注(0)|答案(2)|浏览(101)

我做了一个API调用如下:

public getAllLocations(): Observable<any>
{                                                                   
  location = https://v/locations.pipe(timeout(180000));
  return location;
}

这个API getAllLocations()在不同的components中被多次调用,所以为了避免多次调用,我想检查一下这个Observable是否有值。
如果该值不存在,我将调用API。否则,我将返回该位置。
我不确定我们如何在不订阅的情况下检查可观察到的数据
我是Angular的新手。请建议一个好的实现方法

avwztpqn

avwztpqn1#

就我对Angular的理解,如果没有subscribe方法,你就不能检查订阅数据的值。方法subscribe是当相关函数被调用时发出API调用的方法。
如果您需要在不影响订阅的情况下检查数据值,则可以使用tapdo运算符。

m528fe3b

m528fe3b2#

如果不订阅observable,就不可能检查返回值。您可以使用takeWhile运算符检查API是否返回预期结果。在您的情况下,您可以检查API是否返回不可空值,如果值存在,则继续。如果不满足条件,takeWhile将自动取消订阅。
举个例子

source$
 .pipe(takeWhile(val => val !== null)
 .subscribe(val => console.log(val));

相关问题