如何调用在循环内返回流的函数

问题描述 投票:1回答:2

我有一个具有以下定义的函数:

validate(item: ValidationItem): Observable<ValidationResult>{}

我需要编写一个迭代ValidationItem数组的函数,一旦从所有这些函数的验证中收到ValidationResult,就会在返回结果之前执行一些逻辑。我该怎么做呢?

angular typescript rxjs
2个回答
1
投票

看看forkJoin

forkJoin(... args,selector:function):Observable当所有observable都完成后,从每个observable中发出最后一个发射值。

function validate(item: ValidationItem): Observable<ValidationResult>

const items: ValidationItem[] = [];
const validationResults$ = items.map(item => validate(item));

forkJoin(validationResults$).pipe(
 /* "execute some logic before returning a result" */
)

0
投票

您可能正在搜索forkJoin运算符。它返回一个只发出一次的observable,即当所有参数observable都完成时:

const x = of(1, 2, 3);
const y = of(10, 20, 30);
const z = of(100, 200, 300);

const items = [x, y, z];

/* yields [3, 30, 300] */
forkJoin([x, y, z]).subscribe(results => console.log(results));

您也可以在Stackblitz在线试用此代码。

© www.soinside.com 2019 - 2024. All rights reserved.