У вас есть две проблемы здесь.
Первая из них заключается в том, что ваши возвращаемые значения равны Object
с, и вам придется определить пользовательскую функцию сортировки для передачи на Array.sort
, чтобы получить правильное значение.отсортированный результат.
Другая проблема заключается в том, что вам нужно дождаться завершения всех запросов, прежде чем сортировать массив результатов.Стандартный способ сделать это - использовать Promise.all
и fetch
(который заключает запрос в Promise
).
Вы можете использовать следующий код в качестве шаблона и заполнить определение sortFunction
, чтобы заставить его работать в целом.
const dataLinks = [
"https://api.data.amsterdam.nl/bbga/cijfers/",
"https://api.data.amsterdam.nl/bbga/gebieden/",
"https://api.data.amsterdam.nl/bbga/groepen/",
"https://api.data.amsterdam.nl/bbga/meta/",
"https://api.data.amsterdam.nl/bbga/themas/",
"https://api.data.amsterdam.nl/bbga/variabelen/"
];
let allDataInArray;
Promise.all(dataLinks.map(link => fetch(link).then(response => { if (response.ok) { return response.json(); }})))
.then(result => { allDataInArray = result.sort(sortFunction); })
Обратите внимание, что любой код, который хочет использовать allDataInArray
, также должен ждать.Для этого вы можете реализовать шаблон наблюдатель .