Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2018, 14:41
Аспирант
Отправить личное сообщение для Dark Souls Посмотреть профиль Найти все сообщения от Dark Souls
 
Регистрация: 06.03.2017
Сообщений: 37

$.getJSON помогите разобраться.
Уважаемые гуру!, объясните пожалуйста, почему:
var massive = {};

$.getJSON('url', RespFunc);
function RespFunc(data) {
    // если я обрабатываю data прямо в этой функции -
    alert(data[0].name); // работает как положено

    // а если -
    massive.resp = data;
}
alert(JSON.stringify(massive.resp)); // или ерунда какая-то или undefind


Ковыряя просторы Google так и не понял как правильно ей пользоваться.
Задача состоит в том, чтобы массиву присвоить ответ.

Если можно. с пояснениями работы данного чуда.
Примного благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2018, 14:43
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Dark Souls, $.getJson создает асинхронный запрос, поток при этом не блокируется.
В строке 11 в момент её выполнения объект "massive" еще пустой.
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2018, 14:45
Аспирант
Отправить личное сообщение для Dark Souls Посмотреть профиль Найти все сообщения от Dark Souls
 
Регистрация: 06.03.2017
Сообщений: 37

Сообщение от Nexus Посмотреть сообщение
Dark Souls, $.getJson создает асинхронный запрос, поток при этом не блокируется.
В строке 11 в момент её выполнения объект "massive" еще пустой.
И как это исцелить?
setTimeout - это жлобство... Есть толковое решение?
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2018, 14:57
Лаборант :-)
Отправить личное сообщение для Pavel M. Посмотреть профиль Найти все сообщения от Pavel M.
 
Регистрация: 08.11.2011
Сообщений: 806

alert внутрь RespFunc
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2018, 14:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Dark Souls, можете выполнять необходимые действия в функции "RespFunc" либо обернуть запрос в "Promise".

new Promise(function(resolve){
    $.getJSON('url', function(res){
        resolve(res);
    });
}).then(function(res){
    alert(JSON.stringify(res));
});
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2018, 16:11
Аспирант
Отправить личное сообщение для Dark Souls Посмотреть профиль Найти все сообщения от Dark Souls
 
Регистрация: 06.03.2017
Сообщений: 37

Что то не вышло.

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(), крутился прелоадер и не выполнялась остальная часть кода?

Последний раз редактировалось Dark Souls, 11.01.2018 в 16:44.
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2018, 16:53
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от Dark Souls
document.addEventListener('load', init(), false);
Удалите выделенное красным.

upd. написанное выше не поможет, у вас вообще все неправильно...
Возьмите код с пятого сообщения этой темы и поиграйтесь с ним.

upd2. почитайте, вроде бы подходящая для вас статья.

Последний раз редактировалось Nexus, 11.01.2018 в 17:01.
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2018, 18:28
Аспирант
Отправить личное сообщение для Dark Souls Посмотреть профиль Найти все сообщения от Dark Souls
 
Регистрация: 06.03.2017
Сообщений: 37

Спасибо! Вроде разобрался...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите разобраться с this uroboros7 jQuery 4 02.01.2015 00:56
Помогите разобраться с калькулятором Maksim858 Ваши сайты и скрипты 1 27.12.2014 13:23
Получение ответа сервера через iframe и xhr. Помогите разобраться. Arconas AJAX и COMET 0 26.02.2013 10:38
Помогите пожалуйста разобраться Kupu4 Ваши сайты и скрипты 0 21.01.2010 10:44
Помогите разобраться с галереей IMAGIN yana_studio Общие вопросы Javascript 4 12.12.2009 17:24