Мое приложение стремится:
1. заполнить некоторые массивы (используя файл JSON)
2. обрабатывать данные массива до ...
3. ... вставка данных обработанного массива в подготовленные DIV
В настоящее время это структурировано процедурным способом, но, как указал Пойнти (/7412397/oblast-vidimosti-massiva-javascript-otlichaetsya-ot-ie9-do-firefox-chrome#7412398), пытается сделать это с помощью некоторого асинхронного программирования. Моя текущая цель - заставить его работать во всех браузерах, сделав его должным образом асинхронным.
Хотя приложение отлично работает в IE9, оно не работает в FF и Chrome. В следующей основной процедуре IE9 заполняет и сохраняет все содержимое массива. FF и др. Заселяет, а затем теряет его.
//globally declare some arrays (used throughout the application)
function buildTree(id) {
$(document).ready(function() {
$.getJSON(JSONfile, function(data) {
$.each(data.person, function(i, xdata) {
//populate arrays with relevant data
}); //end of first $.each()
//check 1
}); //end of first getJSON
//check 2
$.getJSON(JSONfile, function(data) {
//check 3
$.each(data.person, function(i, xdata) {
//populate arrays with relevant data, using arrays from first read
}); //end of second $.each()
//check 4
}); //end of second getJSON
//check 5
//check 6
}); //end of document.ready
}
Массивы в порядке: проверка 1, 3, 4, 6
Массивы пусты: проверка 2, 5
Чтобы добавить недоумение к моим страданиям, я решил просто сбросить массивы в DIV без обработки. Я случайно оставил предупреждение в (= check5). Хотя он по-прежнему показывает, что массивы пусты, при выполнении следующих строк (сброс массивов в DIV) все в порядке. Закомментируйте предупреждение: больше ничего.
Видите что-нибудь явно не так?