Я использую jsonp с jQuery, и он работает хорошо. Но порядок выполнения кода - это не то, что я ожидаю. Я имею в виду, что у меня есть функция:Порядок выполнения кода при использовании jsonp с jQuery
function is_server_alive() {
var result;
console.log("beginning of function result" + result);
$.ajax({
url: server + "/is_alive",
async: false,
dataType: "jsonp",
jsonp: "callback",
success: function(JSON){
result = JSON.return;
console.log("is_server_alive result: " + result);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
console.log("server is dead " + textStatus);
},
});
console.log("end of function result: " + result);
return result;
}
Я пытаюсь вернуть переменную результата. Но из-за запроса ajax после того, как все произошло, я не могу этого сделать. Возвращаемое значение кажется неопределенным. Консольный выход как:
beginning of function result: undefined
end of function result: undefined
is_server_alive result: 0
Я пытаюсь async для истины/ложных и ничего не изменилось. Как я могу вернуть переменный результат или изменить порядок выполнения, поэтому выход стать:
beginning of function result: undefined
is_server_alive result: 0
end of function result: 0
Но делает 'обратный результат;' в полном обработчике будет фактически действовать как возврат для 'is_server_alive'? –
Это только изменение вывода консоли, но не исполнение. Тем не менее запрос ajax выполняется после всего остального. – alpert