Прежде всего я бы сделал несколько эффектов, каждый из которых отправлял бы новое действие.Это просто более понятно, и вы получаете журнал в redu-devtools.
@Effect()
public makeFirstRequest = this.actions.pipe(
ofType<InitialAction>(ActionTypes.InitialAction),
switchMap(action => this.myService.firstRequest(action.param)),
map(response => new FollowUpAction(response))
);
@Effect()
public makeSecondRequest = this.actions.pipe(
ofType<FollowUpAction>(ActionTypes.FollowUpAction),
switchMap(action => this.myService.secondRequest(action.param)),
map(response => new NextAction(response))
);
// and so on...
Таким образом, он сначала выполняет InitialAction
и делает запрос, и, как только запрос завершен, он выполняет * 1005.*.Вы можете передать ответ как параметр следующего действия.Помните, что вам не нужно передавать ответ на следующее действие.Вы можете делать с ответом все, что захотите, и отправлять новое действие с любыми параметрами (или без параметров), которые вам нравятся.
И я не уверен, включено ли это в ваш вопрос, но вам нужны наблюдаемые, а не обещания,Если вы используете обещания, вы можете просто использовать from(myPromise)
, предоставленный rxjs
, чтобы отобразить его в наблюдаемую.