컴퓨터/웹 : 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처리하여 프로미스를 반환한다는 것이다.