Observable是空的Rxjs

时间:2019-11-25 12:20:15

标签: angular rxjs

我会检查Observable是否没有元素 我做这样的事

unusedElements$: Observable<Array<string>> = this.elements;

isEmpty(): boolean {
  let empty = false;
  this.unusedElements$.subscribe(res => res.length > 0 ? empty = !empty : empty).unsubscribe();
  return empty;
}

我想知道这是正确的方法吗?也许可以在不订阅Observable是否在Array中没有元素的情况下进行检查吗?

1 个答案:

答案 0 :(得分:2)

如果以功能方式编程,则在极少数情况下,您将必须使用isSomething()之类的值来返回布尔值,除非它对其他流的重用很有用。

大多数时候,您只能使用过滤器使发射静音。如果您仍然想订阅其他情况,可以按如下所示拆分流,然后继续工作。您还可以使用partition个运算符

const hasItem=unusedElements$.pipe(filter(res=>res.length>0))
hasItem.pipe(....do something)

const noItem=unusedElements$.pipe(filter(res=>res.length===0))
noItem.pipe(....do something) 

功能性程序设计是关于分解任务并根据业务需求重新组合