函数在返回AXIOS承诺响应之前继续运行

时间:2020-07-08 21:03:05

标签: javascript reactjs https axios

我对该功能的响应有疑问。该函数应返回游戏的所有ITEMID的串联列表。该列表可以根据一次出售的内容而改变。第一个axios调用用于获取前1000个项目编号和页数。然后,我将不得不对页面的数量进行axios调用以检索所有项目编号。似乎有些乏味,但我认为没有办法解决。 问题在于该函数未运行其他页面,仅在其他响应返回之前返回前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++;
    }
        

}

0 个答案:

没有答案