Есть функция (
getProductData(productId)) которая получает аякс запросом объект из бд и возвращает его. Далее есть разные функции которые могут вызывать эту функцию.
Проблема в том, что код не дожидается ответа от getProductData(productId) и выполняет действия далее (от чего вылетает ошибка). Как заставить дожидаться ответа и после выполнять код?
async: false не помог.
Код для наглядности:
/*
*Получить инфо о продукте по его id
*/
function getProductData(productId) {
$.ajax({
async: false,
method: "POST",
url: "/get-product-data",
data: { productId: productId }
})
.success(function( msg ) {
return msg;
})
.error(function () {
alerts({status: "ERROR", msg: 'Ошибка получения данных, попробуйте позже'});
});
}
/*
*Добавление в корзину и увеличение, если есть
*/
function addToCart(productId) {
var product = getProductData(productId);
if($(product).prop('slug') in cart){
cart[$(product).prop('slug')].amount = ++cart[$(product).prop('slug')].amount;
Cookies.set('cart', cart, { expires: 10 });
reloadCart(cart);
alerts({status: 'OK', msg: 'Теперь ' + $(product).prop('name') + ' стало ' + cart[$(product).prop('slug')].amount});
}
else {
cart[$(product).prop('slug')] = {
productId: $(product).prop('id'),
img: $(product).prop('img'),
price:$(product).prop('price'),
name: $(product).prop('name'),
amount: 1
};
Cookies.set('cart', cart, { expires: 10 });
reloadCart();
alerts({status: 'OK', msg: 'Вы добавили: ' + $(product).prop('name')});
}
}