Позвоните другому эпи c внутри одного эпи c RXJS - PullRequest
0 голосов
/ 18 апреля 2020

Я довольно новичок в RX JS и разработке в целом. Я недавно начал работать с rx js, и я застрял в следующей проблеме, и я был бы признателен за помощь / руководство и некоторые объяснения, пожалуйста.

    export const updateSomethingEpic1 = (action$) =>
 action$
    .ofType('UPDATE_SOMETHING')
    .switchMap(({ result }: { result }) =>
      //SOME API CALL
        .map(({ response }) => updateSomethingSuccess(response)) 

         **make call to second epic**

        .catch(err => updateSomethingError(err)),
    );


      //My second epic

        export const updateSomethingEpic2 = (action$) =>
 action$
    .ofType('UPDATE_SOMETHING2')
    .switchMap(({ result }: { result }) =>
      //SOME API CALL
        .map(({ response }) => updateSomethingSuccess2(response))
        .catch(err => updateSomethingError2(err)),
    );

Мой вопрос заключается в том, как мне позвонить мой второй эпи c после моего первого эпи c вызвал апи и сделал успешный запрос. Хотите сделать вызов в первом эпи c после действия updateSomethingSuccess, которое добавляет ответ в магазин, а затем вызывает второй апи.

1 Ответ

0 голосов
/ 18 апреля 2020

Просто верните действие. Код из вашего образца

.map(({ response }) => updateSomethingSuccess(response) **<--- make call to second epic**)  

используйте

.map(({ response }) => updateSomethingSuccess(response) )

, где updateSomethingSuccess (ответ) - это создатель действий, подобный следующему

function updateSomethingSuccess(response) {
   return { type: 'UPDATE_SOMETHING2', payload: response}; // HERE
}

Тогда ваш Будет выполнен epi c 2 с ofType UPDATE_SOMETHING2.

Это очень просто. Вы должны изменить для ваших нужд

...