На данный вопрос уже ответили:
Есть функция которая делает запрос ajax:
let Ajax = function (url, data) {
$.ajax({
type: 'POST',
url: url,
data: data,
dataType: 'json',
success: function(result) {
let deferred = $.Deferred();
deferred.resolve(result);
return deferred.promise();
},
complete: function () {},
error: function (jqXHR) {
}
})
};
Есть условие:
if(new Action().isUser()) {
...
} else {
....
}
Action:
function Action() {
....
this.isUser = function () {
return $.when(Ajax(getServer() + 'check', {}).then(function (result) {
console.log('RESULT');
return result.isUser;
}));
};
.....
}
Но вот проблема в том что в условие приходит false и код идет дальше, а then
срабатывает позже.
Что я делаю не так подскажите пожалуйста.
Сейчас вы не возвращаете promise из функции Ajax, он возвращается из success обработчика, так же when здесь не нужен. $.ajax сам возвращает promise, по этому ваш код можно упростить до следующего: https://jsfiddle.net/qpo8rxnv/1/
function Ajax(url, data)
{
return $.ajax({
type: 'POST',
url: url,
data: { json: JSON.stringify(data) }
});
};
Ajax('/echo/json/', { data: 5 })
.done(result=> console.log(result))
.fail(err=> console.error('ERROR'));
Если делать в том стиле, что делаете вы то код должен выглядеть так:
function Ajax(url, data)
{
const deferred = $.Deferred();
$.ajax({
type: 'POST',
url: url,
data: { json: JSON.stringify(data) },
success: result => deferred.resolve(result)
})
return deferred;
};
Ajax('/echo/json/', { data: 5 }).then(r=> console.log(r));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как правильно отобразить меню на телефоне с помощью jqueryЧтобы было вот так
Как прочитать заголовок у ответа, к примеруContent-Type? У меня это не получается сделатьЯ пытаюсь хотя-бы отобразить все заголовки