Snippet/JS ์Šค๋‹ˆํŽซ

๐Ÿš€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— sleep() & wait() ๋Œ€๊ธฐ ํ•จ์ˆ˜ ์“ฐ๊ธฐ

์ธํŒŒ_ 2021. 9. 30. 16:22

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ-sleep

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ sleep(), wait() ๋Œ€๊ธฐ ํ•จ์ˆ˜

๋ณดํ†ต C์–ธ์–ด, ์ž๋ฐ”, ํŒŒ์ด์ฌ์—์„œ ๋ณด๋ฉด, ์ž…๋ ฅํ•œ ์‹œ๊ฐ„ ๋งŒํผ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”๋Š” ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ sleep()์ด๋‚˜ wait() ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. โ€‹ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„  ๋”ฐ๋กœ sleep()ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋‹ˆ, ์ง์ ‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ตฌํ˜„ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

while๋ฌธ ํ™œ์šฉ

์‹œ๊ฐ„๋‚ ์งœ๋ฅผ ์–ป๋Š” ํ•จ์ˆ˜ Date() ์™€ while๋ฌธ ์กฐ๊ฑด์œผ๋กœ 3์ดˆ ์ง€๋‚œ๊ฑธ ํ™•์ธ

function wait(sec) {
    let start = Date.now(), now = start;
    while (now - start < sec * 1000) {
        now = Date.now();
    }
}

console.log(11)
wait(3);
console.log(22)

 

Promise ๊ฐ์ฒด ํ™œ์šฉโ€‹

์šฐ์„  Promise ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  setTimeout์œผ๋กœ ์‹œ๊ฐ„ ms ํ›„์— resolveํ•˜๊ฒŒ ํ•œ๋‹ค. ์ด ๋น„๋™๊ธฐ Promiseํ•จ์ˆ˜๋ฅผ await์œผ๋กœ ๋™๊ธฐ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋งˆ์น˜ sleep๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.

function sleep(sec) {
  return new Promise(resolve => setTimeout(resolve, sec * 1000));
} // ํ•จ์ˆ˜์ •์˜


(async () => {
  ... ์ฝ”๋“œ1
  await sleep(2); // 2์ดˆ๋Œ€๊ธฐ
  ... ์ฝ”๋“œ2
})();
// ์ตœ๊ทผ ์ถ”๊ฐ€๋œ Top-Level Await ๋ฌธ๋ฒ•์œผ๋กœ ์ธํ•ด ๋ฐ”๋กœ await๋ฅผ ์‚ฌ์šฉํ• ์ˆ˜๋„ ์žˆ๋‹ค.
... ์ฝ”๋“œ1
await sleep(2); // 2์ดˆ๋Œ€๊ธฐ
... ์ฝ”๋“œ2
 

[JS] ๐Ÿ“š ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ (async / await) ๊ฐœ๋… & ๋ฌธ๋ฒ• ๐Ÿ’ฏ ์ •๋ฆฌ

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์–ธ์ œ ๋ฐ˜ํ™˜๋ ์ง€ ์•Œ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•๋“ค์ด

inpa.tistory.com