Вы можете использовать concat
. Это вызовет следующую наблюдаемую после завершения предыдущего:
concat(
...res.map((code) => of(void 0).pipe(
concatMap(() => {
const description = this.locale.getDescription(code);
const config = new MatDialogConfig();
config.data = {code: code, description: description.value};
this.validationDialogRef = this.dialog.open(ValidationDialog, config);
return this.validationDialogRef.afterClosed().pipe(
tap((data) => {
console.log("data from mat-dialog-close:", this.validationDialogRef, data);
})
);
})
))
).susbcribe(() => {
// all dialogs have been processed
});
Если вы хотите использовать concatAll
, вы можете сделать это следующим образом. Что в принципе то же самое. Вы также можете использовать его с defer
:
from(res).pipe(
map((code) => defer(() => {
const description = this.locale.getDescription(code);
const config = new MatDialogConfig();
config.data = {code: code, description: description.value};
this.validationDialogRef = this.dialog.open(ValidationDialog, config);
return this.validationDialogRef.afterClosed().pipe(
tap((data) => {
console.log("data from mat-dialog-close:", this.validationDialogRef, data);
})
);
}),
concatAll()
).subscribe(() => {
// all dialogs have been processed
});