Всем, доброго времени суток. Есть следующее событие на клик:
$('.post-like').click(function(){
var item_id = $(this).parents('.item').attr('id');
var isVoted = false;
//проверяем что пользователь уже проголосовал
already_vote(item_id, isVoted);
if(isVoted){
//...
}
else{
//...
}
});
В функции already_vote() находится ajax запрос:
function already_vote(post_id, isVoted){
$.ajax({
url: '/ajax/post_like.php',
type: 'POST',
dataType: "json",
data: {
action: 'check',
post_id: post_id
},
})
.done(function(response){
if(response.already_vote == 1){
isVoted = true;
}
})
.fail(function(xhr){
console.log(xhr);
});
}
Собственно нужно в событии click получить переменную isVoted. Простой return не работает, т.к. ajax асинхронный запрос. Знаю что можно просто использовать async: false, тогда работает как надо. Но эта фича считается устаревшей (о чем и сообщает консоль в браузере) и в перспективе может перестать работать. Нагуглил что правильно это делать через callback функции, но что-то не получается. Подскажите как нужно.