У меня есть сага о редуксе, которая должна извлекать продукт из БД в состояние редукции.Но у него есть некоторые зависимости, которые должны быть извлечены первыми.
const result = yield take(['GET_CATEGORIES_SUCCESS', 'GET_TYPES_SUCCESS'])
Запрос на эти зависимости запускается отдельно при загрузке страницы.Проблема в том, что они возвращаются в случайном порядке, и мне нужно take
оба, если я хочу продолжить работу с остальной частью функции.
Мне удалось сделать это с помощью этой сумасшедшей штуковины, которая работает,но есть ли более простой способ сделать это?
Другая проблема заключается в том, что если оба эти
const result = yield take(['GET_CATEGORIES_SUCCESS', 'GET_TYPES_SUCCESS'])
возвращаются до того, как getProductSaga()
может даже сработать, то вся функция застревает.
Это полный код этой саги:
export function* getProductSaga(action) {
try {
const result = yield take(['GET_CATEGORIES_SUCCESS', 'GET_TYPES_SUCCESS'])
if (result.type === 'GET_CATEGORIES_SUCCESS') {
yield take(['GET_TYPES_SUCCESS'])
} else {
yield take(['GET_CATEGORIES_SUCCESS'])
}
const product = yield call(api.product.get, action.id)
yield put(getProductSuccess(product))
yield put(setEditLoadingSuccess(action.id))
} catch (err) {
console.error(err.response.data.errors)
}
}