как вызвать функцию, которая возвращает поток внутри цикла - PullRequest
0 голосов
/ 11 сентября 2018

у меня есть функция со следующим определением:

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

Мне нужно написать функцию, которая будет перебирать массив ValidationItem и, как только он получит ValidationResult от проверки всех из них, выполнить некоторую логику, прежде чем возвращать результат. как бы я поступил так?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Возможно, вы ищете оператор forkJoin .Он возвращает наблюдаемую информацию, которая испускается ровно один раз, а именно, когда все наблюдаемые параметры завершены:

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 .

0 голосов
/ 11 сентября 2018

Взгляните на forkJoin

forkJoin (... args, селектор: функция): наблюдаемый, когда все наблюдаемые завершены, испускают последнее испущенное значение из каждого.

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" */
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...