# Javascript - 코드 실행 대기/지연(Wait/Delay) 방법
Promise 를 이용하면 코드의 실행을 특정 시간 대기 시킬 수 있다.
아래의 코드 1줄짜리 함수를 정의해두고 호출하면 된다.
const delayTime = async (millisec) => new Promise((resolve) => setTimeout(resolve, millisec));
구체적인 사용 방법은,
delayTime() 함수를 호출하면 Promise를 반환하므로
then(콜백함수) 방식이나, async/await 방식을 사용하면 된다.
const delayTime = async (millisec) => new Promise((resolve) => setTimeout(resolve, millisec));
// then(콜백함수) 방식
delayTime(1000).then(() => {
console.log("1초후에 실행");
});
// async/await 방식
(async () => {
await delayTime(1000);
console.log("1초후에 실행");
})();
세부적인 작동원리는
Promise의 작동방식을 안다면 쉽게 이해할 수 있다.
- Promise 생성자는 인자로 콜백함수 (resolve, reject)=>{ ... } 를 입력 받는다.
- 이 콜백함수 내부에 setTimeout(resolve, 시간)을 정의해둔다.
- delayTime() 함수를 호출하면 Promise 객체가 생성되어 반환되고,
- 그 즉시 (resolve, reject)=>{ setTimeout(resolve, 시간) } 콜백함수가 실행된다.
- 이후 setTimeout에 설정한 시간이 지나면 resolve()가 호출 된다.
- resolve()가 호출되면, 그제서야
- delayTime(시간).then(콜백함수)의 콜백함수가 실행된다.
- async 함수 내부라면, await dealyTime(시간); 이후의 코드가 실행된다.
특히 로딩 화면이나 애니메이션 구현 등을 위해 코드 실행을 지연시킬 때 유용하다.
개인적으로 아주 즐겨쓰는 방식이다.
'개발(Development) > JS(자바스크립트)' 카테고리의 다른 글
[JS] Mutation이란? mutable vs. Immutable (cf. const 키워드) (0) | 2023.08.27 |
---|---|
[JS] 배열 중복 요소 제거 방법 (코드 1줄 ) (0) | 2023.08.24 |
[JS] 배열에서 랜덤으로 요소 추출하는 초간단 방법 (코드 1줄) (0) | 2023.08.23 |
[JS] 영어 단어/문장 첫글자만 대문자로 바꾸는 초간단 방법 (코드 1줄) (0) | 2023.08.23 |
[JS] Shallow Copy & Deep Copy 기본 개념, 원리 (feat. 값 vs. 레퍼런스 전달) (0) | 2023.08.22 |
댓글