Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.10.2012, 13:46
Новичок на форуме
Отправить личное сообщение для alex_oo7 Посмотреть профиль Найти все сообщения от alex_oo7
 
Регистрация: 20.10.2010
Сообщений: 8

Функция не меняет глобальные переменные, считая их локальными
var a_id, a_art, a_tit;
var n = 0;
var e = 0;
 
function fill(){
    try {
        VK.api("audio.get", {offset:"0"}, function(data) {  
            if (data.response) {
                n = (data.response).length;
                document.getElementById("i").value +=  n + "\n";
                a_id = new Array(n);
                a_art = new Array(n);
                a_tit = new Array(n);
                for (var i = 0; i < n; i++) {
                    a_id[i] = data.response[i].aid;
                    a_art[i] = data.response[i].artist;
                    a_tit[i] = data.response[i].title;
                                        document.getElementById("i").value +=  a_id[i] + "\n";
                }
            } else {
                e = 2;
            }
        });
    } catch (err) {
        e = 2;
    }   
}
 
fill();
document.getElementById("i").value +=  a_id[23] + "\n";
document.getElementById("i").value += n + " " + e;
for (var i = 0; i < n; i++)
    document.getElementById("i").value +=  a_id[i] + " " + a_art[i] + " " + a_tit[i] + "\n";


После выполнения функции fill() массивы остаются нетронутыми, а переменная n = 0.
Однако, если проследить выполнение функции, то можно заметить, что он выполняется корректно и верно заполняет массивы.
Ответить с цитированием
  #2 (permalink)  
Старый 13.10.2012, 13:51
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Читайте про асинхронность
Ответить с цитированием
  #3 (permalink)  
Старый 13.10.2012, 14:32
Новичок на форуме
Отправить личное сообщение для alex_oo7 Посмотреть профиль Найти все сообщения от alex_oo7
 
Регистрация: 20.10.2010
Сообщений: 8

zebra, да это действительно оказалось асинхронная функция....
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальные переменные в jquery IHB jQuery 11 20.02.2013 13:37
глобальные переменные сайта и js leko Общие вопросы Javascript 8 01.07.2012 10:53
Функция и переменные wcb-falcon Общие вопросы Javascript 3 03.04.2012 23:44
Глобальные переменные kilogram Серверные языки и технологии 3 30.03.2012 15:59
JavaScript Глобальные переменные MixMe Javascript под браузер 1 12.07.2009 14:04