Как правильно получить массив из файл.JSON , в файл.JS [как верно обработать данные, загружаемые из JSON AJAX-ом]?

Как правильно получить массив из файл.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)
})
1 лайк

супер! сейчас так попробую.