astralo
@astralo
для "спасибо" есть кнопка [Нравится]

Что не так в коде Javascript?

Привет.
Есть код
var
    data = getCouponData(code);
console.log(data); //3

function getCouponData(code) {
	var result = false;
	if (isValidCoupon(code)) {
		$.post('/coupons/check', {code: code}, function (data) {
			result = data;
			console.log(result);//1
		}, "json");
	}
	console.log(result);//2
	return result;
}

возвращает следующее
false
false
Object {coupon_id: 1, active: 1, created_at: "2015-07-29 20:30:27"}


Не пойму в чем причина первых двух false, при том, что json возвращается корректно
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
Stalker_RED
@Stalker_RED
Потому, что запрос асинхронный, и первые два console.log вызываются до того, как получен ответ с сервера.
Ответ написан
Комментировать
Да потому что js не будет ждать когда у вас пройдет запрос и вернутся данные, а продолжит свое выполнение, а это значит, что пока запрос не обработан result будет false. Тут вам надо использовать либо Promise, либо callback функцию.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы