我有一个具有以下定义的函数:
validate(item: ValidationItem): Observable<ValidationResult>{}
我需要编写一个迭代ValidationItem数组的函数,一旦从所有这些函数的验证中收到ValidationResult,就会在返回结果之前执行一些逻辑。我该怎么做呢?
看看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" */
)
您可能正在搜索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在线试用此代码。