Если вы отправляете несколько действий, которые вызывают addRender, то нет никакой гарантии, что take (...) будет фактически ожидать действия, вызванного вызовом yield.
export function* addCircle(circleApi, { payload }) {
try {
const response = yield apply(
circleApi,
circleApi.addCircle,
[payload]
);
if (response.error_type) {
yield put(addCircleFailedAction(response.error));
return response;
} else {
yield put(addCircleSucceededAction(response));
return response;
}
} catch (err) {
console.error(err);
return {err};
}
}
export function* addTender(tenderApi, { payload }) {
try {
//because addCircle saga is returning something you can re use it
// in other sagas.
const result = yield call(addCircle,circleAPI?,payload.circlePayload);
//check for result.error_type here
// Rest of saga removed for brevity.
} catch (err) {
console.error(err);
}
}
Ваш код ипринятый ответ приведет к ошибке, потому что call не принимает объект действия в качестве первого аргумента (он принимает объект типа {context, fn}).
Отправка действия и затемпрослушивание другого действия, которое могло или не могло быть побочным эффектом действия, которое вы только что отправили, является плохим замыслом.Вы отправляете эти действия асинхронно, и нет никакой гарантии, что все они потребуют одинакового времени для выполнения или предоставят ожидаемый побочный эффект в том же порядке, в котором они были запущены.