Проблема в том, что запросы AJAX (такие как $.getJSON
) асинхронные . Это означает, что вызов функции возвращается немедленно, прежде чем запрос будет завершен. Вы предоставляете обратный вызов - эта функция запускается после получения данных; это будет после console.log
.
(В качестве дополнительной точки, return
устанавливает только возвращаемое значение обработчика, а не функцию doSomething
.)
Наилучшим способом решения этой проблемы было бы, я думаю, создание собственного вспомогательного метода:
$.getJSONAuth = function(url, data, success) {
var authData = {auth_key:"barfoo"};
if ($.type(data) === 'function') {
success = data;
data = authData;
} else {
data = $.extend({}, authData, data);
}
return $.ajax({
url: url,
type: 'GET',
dataType: 'json',
success: success,
data: data
});
}
Теперь вы можете назвать это так:
$.getJSONAuth(theCoolestURLEver, {id:someThing}, function(data) {
console.log(data);
});