У меня есть следующий код:массива не работает за пределы функции
var vocabWords = [];
//display each vocab words
$.getJSON("getData.php", function (data) {
$.each(data, function (key, val) {
vocabWords.push({
'id': val['id'],
'audioURL': val['audioURL']
});
setTimeout(function() { //onclick="play_sound(\''+val['audioURL']+'\');"
$(".vocab-list").append($('<li onclick="play_sound(\'' + val['audioURL'] + '\');" class="vocab-word" id="vocab_' + val['id'] + '"><img width="230px" height="230px" src="' + val['imageURL'] + '" /><div><i class="fa fa-play-circle"></i>' + val['word'] + '</div></li>').hide().fadeIn(600));
play_sound(val['audioURL']);
}, key * 3000);
});
alert(vocabWords[2]['audioURL']);
}); //end display vocab words
alert(vocabWords[2]['audioURL']);
Первых alert()
работа ... и показывает правильную информацию, но вторые одно не ... что я делаю не так?
Метод '.getJSON' является асинхронным. Он не блокирует выполнение кода после него. Код '.each' в обратном вызове выполняется только после запроса JSON. Второе предупреждение на самом деле происходит до первого (line-of-code-wise). 'vocabWords' пуст для строки« после »' $ .getJSON'. –