У меня есть функция, вызывающая другую функцию для получения данных. Эти данные могут быть локально кэшированы, или мне, возможно, придется получить их. Локально кешируется легко. Но если я получу его через $ .getJSON, не блокируя браузер, отключив асинхронный режим, есть ли способ вернуть эти данные в исходную функцию?
Т.е. в следующем коде:
1) Поскольку bar () больше не существует при возврате parseData (), куда отправляется dataX?
2) Не имея еще одного уровня обратного вызова, который вызывали бы и bar (), и parseData (), и не блокируя браузер во время выполнения запроса, как я могу вернуть dataX из parseData () в foo ()?
var foo = function () {
$('body').text(bar());
};
var bar = function () {
var parseData = function (dataX) {
// do something to data
return dataX;
};
if (localStorage.hasOwnProperty('someKey')) {
return localStorage.getItem('someKey');
else {
$.getJSON('http://somewhere.api.com?fubar=good', parseData);
}
};