Как правильно получить массив из файл.JSON , в файл.JS ? - для цикла я получаю таким образом:
function loadGoods() {
$.getJSON('product/goods.json', function (data) {
тут цикл и так далее };
и всё работает хорошо. Но так как циклов разных много, хочется один раз его получить(массив), например в переменную, и постоянно с ним работать в разных циклах.
И вот, я получаю в переменную, вроде бы задача решена:
var goods;
$.getJSON('product/goods.json', function (data) {
goods = data;});
но, таким образом не всегда загружаются ключи. приходиться раз 5 обновлять страницу.
Почему так происходит, как по другому можно?
Такой подход концептуально вреден. Если так структурировать программу, то очень быстро станет сложно вносить в нее изменения.
Плюс, он не работает “надежно”. Дело в том что функция-коллбек в getJSON выполнится когда-то в будущем. А код, написанный сразу же после вызова getJSON выполнится сразу же после вызова функции. Если после getJSON писать цикл, который работает с goods, то цикл выполнится с тем значением goods, которое в данный момент.
Никогда не структурируй программу таким образом.
Это правильное и адекватное желание. С массивом нужно работать внутри функции коллбека в getJSON.
$.getJSON('product/goods.json', function (data) {
// и тут вся обработка
})
Если хочешь разделить логически один цикл от другого, то лучше всего для каждой операции завести по функции, и передавать в нее массив с данными. Типа:
$.getJSON('product/goods.json', function (data) {
showGoods(data)
showCategories(data)
})