javascript에서 sleep 함수 구현
javascript에는 sleep함수가 없어서, 직접 구현해서 사용해야합니다.
sleep 함수를 구현하는 법은 다음과 같습니다.
1 | //ms micro sec만큼 대기 |
사용법은 다음과 같이 sleep 함수 앞에 await를 붙여서 써 줍니다.
1 | console.log('sleep 수행 전'); |
Promise 없이 Sleep하기 1
오래된 자바스크립트 버전 (ecma6 이전)에서는 Promise를 쓸 수 없습니다.
이럴 때 대안 첫번째는 babel을 사용하는 것입니다.
아래와 같이 package.json설정을 하고, npm run build로 앞서 작성한 javascript 코드를 빌드하여 사용할 수 있습니다.
1 | { |
Promise 없이 Sleep하기 2
또 다른 방식은 아래와 같이 while looping을 하는 방식이 있습니다.
다만 이 방식은 cpu 부하가 크게 증가할 수 있는 위험이 있습니다.
1 | function sleep(ms) |
사용법은 아래와 같습니다.
1 | console.log('sleep 수행 전'); |
Promise 없이 Sleep하기 3
또 다른 방식은 setTimeout에 function을 넘겨주는 방식입니다.
1 | setTimeout(func, ms); |
사용법은 아래와 같습니다.
이 방식은 sleep을 여러번 하면 depth가 깊어져 코드를 읽기가 힘들어지는 단점이 있습니다.
1 | console.log('sleep 수행 전'); |
총평
javascript에서 기본적으로 sleep을 제공해주었으면 좋겠네요.
많은 사람들이 물어봄직하고, 다른 언어들에서는 기본 api 로 제공하는데 왜 javascript는 지원을 안하는지 의아합니다.