JavaScript в браузере однопоточный.Вы не можете асинхронно ждать завершения операции, например, используя цикл.
Вам также нужно будет заставить функцию обратного вызова вызывать другую функцию, когда запрос завершается (вместо того, чтобы каким-либо образом возвращать)"к другой функции), или сделайте запрос AJAX синхронным (передав async: false
как часть параметров запроса).
Так как вы не хотите блокировать, остается только обратный вызоввариант.Если вы хотите немного изменить свой дизайн, вы можете добавить второй параметр к функции getProxySrc
, который будет функцией, выполняемой при получении proxy-src:
function getProxySrc(xmlSrc, onProxyObtained) {
$.ajax({
//...
success: function(xml, textStatus) {
// ...
if (onProxyObtained) {
onProxyObtained(theProxy);
}
}
});
}
Затемвызывающая сторона может передать функцию, чтобы сделать что угодно с результатом, как только он станет доступен, без опроса.