Это указано в связанном ответе, который вы включили, но вызов dispatch()
создаст новое действие, которое затем проходит всю цепочку промежуточного программного обеспечения с самого начала. В вашем случае это включает промежуточное программное обеспечение, которое вы устраняете. Из того, что я вижу, вы звоните next()
только в том случае, если входящее действие считается недействительным. В противном случае последующий вызов API приводит к повторному вызову dispatch()
, независимо от того, успешен он или нет, и поэтому действие никогда не попадает в редуктор, поскольку оно постоянно устанавливается в начале цепочки промежуточного программного обеспечения и никогда не продвигается через next()
.
Когда вы говорите, что этот код не работает, каково конкретное поведение? Ваше приложение зависает? Это сбой? Поскольку этот сценарий по существу устанавливает рекурсивную функцию без базового случая, я бы поспорил, что вы видите ошибки типа «максимальный стек вызовов превышен».
Полагаю, я бы спросил, почему вам нужно использовать dispatch()
для результатов запроса, а не отправлять их вместе с помощью next()
, или почему вы не настроили это так, чтобы установить условие, которое использует результат предыдущего вызова, чтобы определить, будет ли API вызываться снова.