프로젝트

오디약(실전프로젝트) 트러블슈팅 - 북마크 연속클릭시 500에러

stella0905 2023. 7. 2. 22:15

오류 내역


오류가 발생한 경로

북마크를 연타했을때 간혈적으로 500에러가 남 원인 : API요청에 의해 로직을 처리하는 도중에 새로운 요청이 들어와서 500에러가 남,

추측 : 데이터베이스 lock에 의해 북마크 추가 및 삭제가 불가능 했을것으로 추측이됨


오류 해결 방법

const onClickBookMarkHandler = async e => {
    if (timerId) {
      clearTimeout(timerId); // 이전 타이머 취소
    }

    const newTimerId = setTimeout(() => {
      if (loginUser) {
        bookmarkMutation.mutate();
      } else {
        setIsLogin(!isLogin);
      }
    }, 300);

    setTimerId(newTimerId); // 새로운 타이머 ID 설정
    e.stopPropagation();
  };

북마크 버튼을 클릭하면 디바운싱 기능이 작동하여, 버튼이 클릭된 후 300밀리초 동안 다시 클릭되지 않으면 API 요청이 실행된다. 이를 통해 마지막으로 버튼이 클릭된 후 300밀리초 동안 버튼이 눌리지 않아야만 API 요청이 처리되게 했다.

북마크 버튼을 클릭하면 디바운싱 기능이 작동하여, 버튼이 클릭된 후 300밀리초 동안 다시 클릭되지 않으면 API 요청이 실행된다. 이를 통해 마지막으로 버튼이 클릭된 후 300밀리초 동안 버튼이 눌리지 않아야만 API 요청이 처리된다.