Это происходит потому, что эта функция обратного вызова (function(data) {...}
) выполняется позже , когда ответ возвращается ... потому что это асинхронная функция. Вместо этого используйте значение, как только оно будет установлено, например:
function lookupRemote(searchTerm)
{
var defaultReturnValue = 1010;
var returnValue = defaultReturnValue;
$.getJSON(remote, function(data) {
if (data != null) {
$.each(data.items, function(i, item) {
returnValue = item.libraryOfCongressNumber;
});
}
OtherFunctionThatUsesTheValue(returnValue);
});
}
Именно так должно быть все асинхронное поведение, запускать любое нужное значение, когда оно у вас есть ... то есть когда сервер отвечает данными.