在可观察数组中查找可观察

时间:2018-10-23 04:16:11

标签: angular observable

我有一个可观察的数组,看起来像

obj_array: Array<Observable<SatzDetail[]>> = [];

我的观察像

let ob_oj = this.defAPi.getDetailSatz(dsn, date);

然后我将这个可观察对象推入数组,就像这样

 this.obj_array.push(ob_oj);

后来我订阅了这些数组元素

Observable.concat(...this.obj_array).subscribe(res => {

            res.forEach(a => { this.detailSatz.push(a) });
        });

到目前为止,一切都很好。但是我想控制一个Observable是否存在,还是我推动了这个

this.obj_array.push(ob_oj);

我该怎么做?我必须在数组中找到一个特定的可观察对象。

谢谢。

1 个答案:

答案 0 :(得分:0)

我从您的问题中了解到,您对可观察对象发出的重复项不感兴趣,因此您想在推送可观察对象之前进行检查。

您可以尝试的是不同的运算符:

Observable.concat(...this.obj_array).distinct().subscribe(res => {
     res.forEach(a => { this.detailSatz.push(a) });
});
  

Angular6及更高版本:

Observable.concat(...this.obj_array).pipe(distinct()).subscribe(res => {
         res.forEach(a => { this.detailSatz.push(a) });
    });

通过这种方式,您实际上不需要检查自己在推动什么。