小编Ale*_*TGM的帖子

如何在不完成主题的情况下使用 RxJs.toArray 方法将流转换为数组?

我想允许用户传递 ids 来获取一些过滤后的数据。为此,我创建了一个允许发送 Guid 数组的主题:

selectedVacancies: Subject<string[]> = new Subject();
selectedVacancies.next(['a00652cd-c11e-465f-ac09-aa4d3ab056c9',
                         'f145b6a6-0a66-49d6-a2d2-eb9123061d96']);
Run Code Online (Sandbox Code Playgroud)

我有另一个可观察的对象,它订阅了该主题并等待数据到来(availableVacancies 和 availableVacancyTypes 只是我的角度服务中的 Observable 和 Observable):

filteredVacancyTypes: Observable<VacancyTypeModel[]>;
filteredVacancyTypes = this.selectedVacancies
     .flatMap(vacancyIds => vacancyIds)
     .filter(id => !isNullOrUndefined(id))
     .flatMap(id => this.availableVacancies.first(v => v.id === id))
     .flatMap(v => this.availableVacancyTypes.filter(vt => vt.id === v.type.id))
Run Code Online (Sandbox Code Playgroud)

我想累积过滤后的数据并将其作为 VacancyTypeModels 数组返回。我知道存在什么 toArray 方法,但我无法使用它,因为主题永远不会完成(因为我必须等待用户发布另一个 id)

是否有任何方法可以在不完成源的情况下将数据作为数组返回?

rxjs typescript angular

6
推荐指数
1
解决办法
2971
查看次数

标签 统计

angular ×1

rxjs ×1

typescript ×1