Используйте функцию map
массивов, а также RxJS's forkJoin
forkJoin(Array
.from(files)
.map(file => file.size < 5000000 && this.asyncFunc(file) || undefined)
.filter(value => !!value)
).subscribe(([...responses]) => {
console.log(responses);
this._photos.push(...responses);
});
forkJoin
будет выполнять все вызовы, если размер файла меньше 5 МБ (map
& filter
позаботится об этом), и после выполнения всех вызовов ответы будут помещены в ваш массив.
РЕДАКТИРОВАТЬ Если вы хотите, чтобы ваши вызовы были упорядочены, используйте вместо этого concat
:
concat(...Array
.from(files)
.map(file => file.size < 5000000 && this.asyncFunc(file) || undefined)
.filter(value => !!value)
).subscribe((...responses) => {
this._photos.push(...responses);
console.log(this.photos);
});