Итак, я работаю над приложением с концепцией «Планы», и к каждому плану можно добавить комментарий.Эта часть работает нормально, но, похоже, она не работает и запутывается, если я пытаюсь запустить это в цикле.
Действие:
export class AddComment implements Action {
readonly type = CommentActionTypes.AddComment;
constructor(public payload: Comment) {}
}
export class AddCommentSuccess implements Action {
readonly type = CommentActionTypes.AddCommentSuccess;
constructor(public payload: Comment) {}
}
Эффект
@Effect()
addComment$: Observable<Action> = this.actions$
.ofType<AddComment>(CommentActionTypes.AddComment).pipe(
switchMap(action => this.commentService.addComment(this.disciplineType, action.payload)),
map((comment: any) => new AddCommentSuccess(comment)),
catchError(err => of(new AddCommentFail(err)))
);
Реализация
То, с чем я борюсь, это быстрое срабатывание / у меня есть ситуация, когда я хочу добавить дублирующий комментарий к нескольким планам.
saveSet.forEach(x => {
comment.plan_id = x.id;
this.store.dispatch(this.buildAddCommentAction(comment));
});
Для справки:
buildAddCommentAction(comment: DisciplineComment) : Action {
return new CommentActions.AddComment(comment);
}
Что происходит
Если у меня есть список из 5 планов и я хочу добавить дублирующий комментарий ко всем из них, я получаю только успешный ответ на последний элемент впетля.
Теперь я знаю, что это слишком болтливо, то есть 5 отдельных вызовов клиент / сервис.Что я не могу понять, какой должен быть предписанный подход к этому?
1.) Новое действие BulkAddComment, эффект и т. Д. Я не хочу этого делать, потому что у меня есть Комментарии, Проблемы (аналогичные по функциям инужно) и по одному на каждую «дисциплину».Это будет около 36 новых эффектов и вдвое больше в действиях.Необходим серьезный рефакторинг.
2.) Изменить действия и эффекты для 1 или нескольких
3.)?
Спасибо за ввод