목차

반응형

오류

axios를 한두번 요청하는 경우에는 문제없지만 몇천번의 요청을 하는 경우 한두번꼴로 request 이후 어떠한 결과값도 반환하지 않고 그대로 홀딩되버리는 경우가 발생한다.

당연히 timeout도 옵션값에 넣었는데 timeout 작동도 잘 하지만 그냥 그게 문제가 아니다. ㅇㅇ

정말 귀신이 곡할 노릇이라서 axios 라이브러리가 문제라고 생각하기도 쉽지 않았다.

여기까지 찾아 들어온 당신 꽤 하는거다.

보상으로 어렵게 얻어낸 해결 방법을 공유하도록 하겠다.

 

원인

원인은 잘 모르겠다. 아래에도 비슷한 상황이 있는데 흔한 케이스도 아니고 어쩌면 라이브러리 버전 문제일까 싶기도 한데 딱히 찾아봐도 뭐가 안나왔다.

https://github.com/axios/axios/issues/459

 

해결

해결방법은 axios의 timeout을 사용하지말고 자체적으로 타이머를 걸어서 cancel-token이라는 기능과 함께 해당 요청이 시간이 지나면 내가 직접 취소처리를 해버리는 것 이다.

nodejs axios cancel token 이라고 검색해서 찾아보면 사용 방법이 잘 나온다.

어떤 느낌인지 보고 싶으면 아래 내가 적용하기 전과 후 코드를 봐보자.

 

왼쪽이 before, 오른쪽이 after

좀 더러워지긴 했는데 이렇게 하니까 잘 된다.

반응형