问题描述
我正在使用Angular9。我具有以下组件,该组件可以显示大量图像
<mat-grid-tile *ngFor="let person of pageData; let i = index;" class="animated flipInX">
...
<img [src]="images[i]"
alt="" width="100%">
使用forkJoin在下面加载图像。这实现了能够并行加载我的图像的目标...
let images$ = [];
res.forEach(( componentarray,key ) => {
images$.push(
this.authService.getimage(res[key].Id)
);
});
const getimagesObservable = forkJoin(images$);
getimagesObservable.subscribe(results => {
results.forEach(( result,idx ) => {
this.createTheImage(result,idx);
})
});
});
我想知道的问题是图像仅在它们全部加载时显示(所有调用完成)。我很好奇是否有一种方法可以并行加载图像,但在每次调用完成时也可以显示图像。
解决方法
您可以使用merge
代替forkJoin
来获取想要的东西。
import { merge } from 'rxjs';
const getImagesObservable = merge(...images$); // spread the array of observables
getImagesObservable.subscribe(result => {
this.createTheImage(result,idx);
});