#redux #promise #es6-promise
#redux #обещание #es6-обещание
Вопрос:
Я использую создателя действия thunk в redux для отправки запроса в мой Rails API через следующее:
export const addProduct = (product) => (dispatch) =>
createProduct(product)
.then((product) => dispatch(receiveProduct(product)))
.catch((err) => dispatch(receiveProductErrors(err.responseJSON)));
createProduct
это служебная функция API, которая отправляет запрос на сервер. Для этого я использовал ajax jquery.
export const createProduct = (product) =>
$.ajax({
url: "/api/products",
method: "POST",
data: { product },
});
В приведенном выше коде .catch
никогда не вычисляется, даже когда я пытаюсь создать запрос с недопустимыми параметрами. .then
всегда выполняется.
Если бы кто-нибудь мог направить меня в правильном направлении, это было бы здорово.
Ответ №1:
Я исправил эту проблему. Просто нужно было выдать ошибку, чтобы возвращенное обещание было отклонено.
export const addProduct = (product) => (dispatch) =>
createProduct(product)
.then((product) => dispatch(receiveProduct(product)))
.catch((err) => {
dispatch(receiveProductErrors(err.responseJSON));
throw err
})