redux-saga зачем вам доходность рядом с путом? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть следующая сага

export function* login(userName, password) {
  yield put({ type: 'LOGIN_DONE', status: 'success', userName: 'test' });

  // Redirect to the landing page
  yield put(push('/location'));
}

Я запутался в следующем

если я не ставлю доходность до первого, действие не отправляется. Это ожидаемое поведение и если да, то почему? Я предполагал, что наличия доходности рядом с финальным путом должно быть достаточно, но это только похоже на отправку только второго действия

спасибо

1 Ответ

1 голос
/ 01 апреля 2019

Функция генератора имеет возможность приостановить свой процесс, пока последующие функции генератора не будут прекращены. Это достигается использованием ключевого слова yield :

Затем промежуточное программное обеспечение выполняет полученный эффект, как указано API эффектов. Между тем, генератор будет приостановлен до выполнение эффекта прекращается. После получения результата выполнение, промежуточное программное обеспечение вызывает следующий (результат) при передаче генератора это полученный результат в качестве аргумента. Этот процесс повторяется до Генератор завершает работу нормально или выдает какую-то ошибку.

Так что в вашем случае действие может вызвать другие саги, которые могут понадобиться, чтобы закончить свою работу, прежде чем переходить к следующему выходу. Если вы не разместите этот выход, это может вызвать побочный эффект, когда последующие функции генератора будут работать асинхронно, а результат будет не таким, как ожидалось.

...