Я из избыточного использования и знаю концепцию промежуточного программного обеспечения, где мы использовали, чтобы получить ответ API и прикрепить его к хранилищу с действиями диспетчеризации. В избыточном коде код в следующем формате и с небольшим знанием функции генератораЯ знаю, что функция останавливается на yield
и снова получает триггеры только с .next
. Может ли кто-нибудь объяснить нижеследующий случай
function* fetchUser(action) {
try {
const user = yield call(Api.fetchUser, action.payload.userId);
yield put({type: "USER_FETCH_SUCCEEDED", user: user});
} catch (e) {
yield put({type: "USER_FETCH_FAILED", message: e.message});
}
}
/*
Starts fetchUser on each dispatched `USER_FETCH_REQUESTED` action.
Allows concurrent fetches of user.
*/
function* mySaga() {
yield takeEvery("USER_FETCH_REQUESTED", fetchUser);
}
/*
Alternatively you may use takeLatest.
Does not allow concurrent fetches of user. If "USER_FETCH_REQUESTED" gets
dispatched while a fetch is already pending, that pending fetch is cancelled
and only the latest one will be run.
*/
function* mySaga() {
yield takeLatest("USER_FETCH_REQUESTED", fetchUser);
}
export default mySaga;
, как yield put
вызывается после yield call
без следующих