switchMap
имеет другое назначение.
Как я вижу, вы просто хотите сгладить Observables, поэтому вы должны использовать flatMap
или mergeMap
вместо switchMap
.
Подробнее об этих операторах: https://www.learnrxjs.io/operators/transformation/switchmap.html
Попробуйте что-то вроде этого:
@Effect() saveModelAction = this.action$.pipe(
ofType(SAVE_MODEL),
mergeMap((action: any) => {
const storageMetaData: StorageData = action.payload;
return this.modelService.loadState()
.pipe(
mergeMap((state: State) => {
const model: Model = AnalysisUtils.convertStateToModel(state, storageMetaData);
return this.modelService.saveModel(model)
.pipe(
map(() => new SavingModelCompleteAction),
catchError((error: Error) => this.createErrorObservableAndLog(error))
);
}),
catchError((error: Error) => this.createErrorObservableAndLog(error))
);
})
);
Также распространенной ошибкой является то, что константы имеют одинаковое примитивное значение. В вашем случае, пожалуйста, проверьте, что SAVE_MODEL_COMPLETE! = SAVE_MODEL. Если они имеют одинаковое примитивное значение, вы продолжаете отправлять одно и то же действие.