$.getJSON помогите разобраться.
Уважаемые гуру!, объясните пожалуйста, почему:
var massive = {}; $.getJSON('url', RespFunc); function RespFunc(data) { // если я обрабатываю data прямо в этой функции - alert(data[0].name); // работает как положено // а если - massive.resp = data; } alert(JSON.stringify(massive.resp)); // или ерунда какая-то или undefind Ковыряя просторы Google так и не понял как правильно ей пользоваться. Задача состоит в том, чтобы массиву присвоить ответ. :help: Если можно. с пояснениями работы данного чуда. Примного благодарен! :) |
Dark Souls, $.getJson создает асинхронный запрос, поток при этом не блокируется.
В строке 11 в момент её выполнения объект "massive" еще пустой. |
Цитата:
setTimeout - это жлобство... Есть толковое решение? |
alert внутрь RespFunc
|
Dark Souls, можете выполнять необходимые действия в функции "RespFunc" либо обернуть запрос в "Promise".
new Promise(function(resolve){ $.getJSON('url', function(res){ resolve(res); }); }).then(function(res){ alert(JSON.stringify(res)); }); |
Что то не вышло.
document.addEventListener('load', init(), false); function init() { var massive = {}; massive.all = new Promise(function (resolve) { $.getJSON('url', function (data) { resolve(data); }) }).then(function (responce) { return responce; }); return massive; } alert(JSON.stringify(init())); // {} как то можно сделать так, что-бы пока не проинициализируется объект в init(), крутился прелоадер и не выполнялась остальная часть кода? |
Цитата:
upd. написанное выше не поможет, у вас вообще все неправильно... Возьмите код с пятого сообщения этой темы и поиграйтесь с ним. upd2. почитайте, вроде бы подходящая для вас статья. |
Спасибо! Вроде разобрался... :)
|
Часовой пояс GMT +3, время: 07:45. |