private save(payload) {
const newMedias: Observable<Media>[] = [];
const newMediaInStepIndex: number[] = [];
(payload.formData.steps).forEach((step: Step, stepIndex: number) => {
const media: Observable<Media> = this.createOneMedia(step);
if (media !== undefined) {
newMedias.push(media);
newMediaInStepIndex.push(stepIndex);
}
});
forkJoin(newMedias).subscribe(medias => {
medias.forEach((media, i) => {
console.log('Media created with id: ' + media.id + ' in step ' + newMediaInStepIndex[i]);
payload.formData.steps[newMediaInStepIndex[i]].media[0].id = media.id;
});
});
return this.createRecipe(payload);
}
Моя проблема заключается в том, что следующая строка выполняется асинхронно и, следовательно, не до возврата конца:
payload.formData.steps[newMediaInStepIndex[i]].media[0].id = media.id;
, поэтому мне нужно выполнить возврат конца после окончанияподписываться.Я думаю, что мы должны сократить эту функцию пополам.
ВАЖНО: возврат в сохранение (полезная нагрузка)