컴퓨터/웹 : JS

[Axios] Axios Early Return 구현/axios 핸들링

도도새 도 2023. 8. 9. 17:41

 

import axios from "axios";

export function getCodeByName(name:string){
}
export interface dyData{

    list:any|null,
    year:number|null,
    reprt_code:string|null
}



async function getDividendYieldByCode(corCode:string):Promise<dyData[]>{
    //연도를 거슬러가며 사업보고서, 3분기 2분기 1분기 순으로 훑어 유효한 데이터일시 리턴
    let result:any[] = [];
    let ReportCode = ['11011', '11014', '11012', '11013']//사업보고서, 3분기 2분기 1분기
    const currentDate = new Date();
    let currentYear:number = currentDate.getFullYear();

    let dyData:dyData = {
        list:null,
        year:null,
        reprt_code:null
    };

    let i:number = 0;
    while(i < 2){//2년 동안만 조사
        i++
        for(let code of ReportCode){
            console.log('code', code);
            let url:string = `alotMatter.json?crtfc_key=내키값&corp_code=${corCode}&bsns_year=${currentYear}&reprt_code=${code}`
            await axios.get('/stockApi/' + url)
                .then((res)=>{
                    console.log(res.data);
                    if(res.data.status ==='000'){
                        dyData = {
                            list:res.data.list,
                            year:currentYear,
                            reprt_code:code
                        }
                        return dyData.list;
                    }
                })
                .then((list) => {
                    result = list;
                })                
            if(result) break;
        }
        currentYear--;
        if(result) break;
    }
    return result;
}

export {getDividendYieldByCode}

 

요지는 axios에 await를 사용하여 결과가 처리되길 기다리고, 처리된 값을 기준으로 break처리하여 프로미스를 반환한다는 것이다.