У меня проблема с ответами этой функции. Функция должна возвращать объединенный список всех ITEMID для игры. Этот список может меняться в зависимости от того, что продается одновременно. Первый вызов ax ios используется для получения первых 1000 номеров элементов и количества страниц. Затем мне пришлось бы сделать вызовы ax ios для определения количества страниц для получения всех номеров элементов. Кажется немного утомительным, но я не думаю, что есть способ обойти это. Проблема в том, что функция не запускает другие страницы и возвращает только первые 1000 элементов до того, как вернутся другие ответы. Есть ли лучший способ реализовать эту функцию?
export const getAllItemID = (region) => {
let finalList = [];
let pages = 0;
let currentPage = 1;
let region_buy_id = `URL For Call`;
axios
.get(region_buy_id)
.then(json => {
pages = json.headers['x-pages'];
for(let k in Object.values(json.data)){
finalList.push(json.data[k]);
}
currentPage++;
})
.then(()=>{
while(currentPage <= pages) {
let region_buy_id = `URL For Call`;
axios
.get(region_buy_id)
.then((json) => {
for(let k in Object.keys(json.data)){
finalList.push(json.data[k]);
}
});
currentPage++;
}
})
.then(()=>{
return finalList;
});
}
Updated Function
export async function getAllItemID(region) {
let finalList = [];
let pages = 0;
let currentPage = 1;
let region_buy_id = `URL`;
await axios
.get(region_buy_id)
.then(json => {
pages = json.headers['x-pages'];
for(let k in Object.values(json.data)){
finalList.push(json.data[k]);
}
currentPage++;
});
while(currentPage <= pages) {
let region_buy_id = `URL`;
await axios
.get(region_buy_id)
.then((json) => {
for(let k in Object.keys(json.data)){
finalList.push(json.data[k]);
}
});
currentPage++;
}
}