더북(TheBook)

타이머는 콜백 기반 API이지만 프로미스 방식을 사용할 수도 있습니다. 다만, 프로미스 기반 타이머는 노드 내장 객체가 아니라 3.5절에서 배울 노드 내장 모듈입니다. 여기서 먼저 사용해봅시다.

timerPromise.mjs

import { setTimeout, setInterval } from 'timers/promises';

await setTimeout(3000);
console.log('3초 뒤 실행');

for await (const startTime of setInterval(1000, Date.now())) {
    console.log('1초마다 실행', new Date(startTime));
}

콘솔

$ node timerPromise.mjs
3초 뒤 실행
1초마다 실행 2022-04-12T08:10:54.969Z
1초마다 실행 2022-04-12T08:10:54.969Z
1초마다 실행 2022-04-12T08:10:54.969Z
1초마다 실행 2022-04-12T08:10:54.969Z
1초마다 실행 2022-04-12T08:10:54.969Z
(...)

프로미스 기반이므로 then 대신 await을 사용하기 위해 ES 모듈을 사용했으며, timers/promises라는 모듈에서 setTimeoutsetInterval을 새롭게 제공합니다. setTimeout(밀리초)로 몇 밀리초를 기다릴지 정할 수 있고, setInterval(밀리초, 시작값)for await of 문법과 함께 사용할 수 있습니다. 시작값은 필수값이 아니므로 굳이 넣지 않아도 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.