250x250
반응형
- Today
- Total
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react
- 리액트 알림
- 산업기능요원 훈련소
- 자바스크립트 순수함수
- 오라클클라우드
- 비동기 병렬처리
- 공익 훈련소
- sessionStorage
- 훈련소
- styled-component
- query param
- 오블완
- useformstatus
- react life sycle
- resolved to branch.
- The above error occurred in the
- next.js toast
- angular
- 리액트 라이프사이클
- svgr
- useRouter
- 자바스크립트
- server action
- localStorage
- react toast
- no-use-before-define
- 훈련소 후기
- 리액트
- 사회복무요원 훈련소
- NextJS
Archives
아 그거 뭐였지
[JavaScript] async함수 활용 팁 본문
728x90
반응형
프로젝트를 진행하다보면 GET이나 POST 메소드로 데이터를 주고받을때가 많다. (사실 이게 다인듯함)
데이터를 주고받을때는 일정 시간이 소요되기 때문에 대부분 비동기 프로그래밍으로 처리한다.
async를 사용하여 함수를 작성하는데 이때 사용될수있는 자그마하지만 중요한 팁이다. 바로 코드를 확인해보자.
async getUserData(){
try{
const res = await this._api.getUserData();
}
catch(e){
console.log(e);
}
}
위와같이 유저데이터를 가져오는 함수가 있다고 가정하자.
별로 문제가 될게 없어보이는 함수이지만, 한가지 놓친 부분이있다.
비동기 함수는 처리가 언제 끝나는지 알수없다. 만약 저 getUserData라는 함수가 아직 실행중일때
다시 getUserData함수를 호출하면 어떻게될까? 분명 원치않는 데이터를 받게될것이다.
그렇기 때문에 함수가 실행중일때 다시 호출되지 않도록 안전장치를 하나 마련해주면 될것이다.
코드는 다음과 같다.
//함수가 실행중인것을 알려주기위한 변수선언
let isRequestingUserData:boolean = false;
async getUserData(){
// 함수가 이미 실행중이면 함수를 실행시키지않는다.
if(isRequestingUserData) return;
// 함수가 실행중이면 true값으로 변경한다.
isRequestingUserData = true;
try{
const res = await this._api.getUserData();
}
catch(e){
console.log(e);
}
// 함수가 종료되면 false값으로 변경한다.
isRequestingUserData = false;
}
isRequestingUserData 라는 하나의 flag변수를 선언해주고 함수가 실행중인데 함수가 호출됐을경우
isRequestingUserData 변수로 함수의 실행여부를 판단하고 함수를 실행시키지않는다.
이런식으로 코드를 작성한다면 좀더 안정적으로 코드가 작동하는것같다.
728x90
반응형
'Front-End' 카테고리의 다른 글
[Angular] ngModel , 데이터 양방향 바인딩 (0) | 2022.03.21 |
---|---|
[Angular] Input , Output 데코레이터 (0) | 2022.03.15 |
[JavaScript] location.href 사용하기 (0) | 2022.03.09 |
[JavaScript] 자바스크립트 부모창에서 자식창 제어하기 ex)결제창 제어 (0) | 2022.01.22 |
[JavaScript] 자바스크립트 Localstorage, Sessionstorage 사용법 (0) | 2022.01.16 |
Comments