Skip to content

Latest commit

ย 

History

History
132 lines (106 loc) ยท 2.49 KB

ch42-๋ฌธ์ œ.md

File metadata and controls

132 lines (106 loc) ยท 2.49 KB

Chapter42

๐Ÿ“Œ๋ฌธ์ œ1

๋‹ค์Œ์˜ true or false๋ฅผ ํŒ๋‹จํ•˜์„ธ์š”.

(1) ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํƒœ์Šคํฌ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๋‹ค์Œ์— ์‹คํ–‰๋  ํƒœ์Šคํฌ๊ฐ€ ๋Œ€๊ธฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋™๊ธฐ ์ฒ˜๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.
(2) ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ๋ธ”๋กœํ‚น์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
(3) ๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ํƒœ์Šคํฌ์˜ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.
(4) ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

๋‹ต์•ˆ ์ž‘์„ฑ

(1) 
(2) 
(3) 
(4) 

๐Ÿ“Œ๋ฌธ์ œ2

์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ํŒ๋‹จํ•˜์„ธ์š”.

const sleep = (delay) => {
  const now = Date.now();
  while (Date.now() - now < delay) {}
};

sleep(1000);

setTimeout(() => {
  console.log(1); // (1) 2 or 3์ด ์ถœ๋ ฅ๋œ์ดํ›„ ๋ช‡์ดˆํ›„์— ์ถœ๋ ฅ๋˜๋Š”์ง€? 
}, 1000);

setTimeout(() => {
  console.log(2);
}, 0);

setTimeout(() => {
  console.log(3);
}, 0);
const sleep = (delay) => {
  const now = Date.now();
  while (Date.now() - now < delay) {}
};



setTimeout(() => {
  console.log(1); // (2) 2 or 3์ด ์ถœ๋ ฅ๋œ์ดํ›„ ๋ช‡์ดˆํ›„์— ์ถœ๋ ฅ๋˜๋Š”์ง€?
}, 1000);

setTimeout(() => {
  console.log(2);
  sleep(1000);
}, 0);

setTimeout(() => {
  console.log(3);
}, 0);

๋‹ต์•ˆ ์ž‘์„ฑ

(1)
(2)

๐Ÿ“Œ๋ฌธ์ œ3

๋‹ค์Œ ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ two one์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ์ด์œ ๋ฅผ Task Queue, Event Loop, Call Stack์˜ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•˜์‹œ์˜ค.

function test() {
  console.log('one');
}

setTimeout(test, 0);
console.log('two');

๋‹ต์•ˆ ์ž‘์„ฑ


๐Ÿ“Œ๋ฌธ์ œ4

๋‹ค์Œ ์ฝ”๋“œ์˜ ์ฝ˜์†” ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์“ฐ๊ณ , ์ฝ”๋“œ์˜ ์‹คํ–‰์— ๋”ฐ๋ฅธ ์ฝœ์Šคํƒ๊ณผ ํƒœ์Šคํฌ ํ์˜ ๋ณ€ํ™”๋„ ๊ฐ™์ด ์„œ์ˆ ํ•ด์ฃผ์„ธ์š”.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function hello() {
            console.log('hello');
        }
        function bye(){
            console.log('bye');
        }
        
        function sleep(func, delay){
            const delayUntil = Date.now() + delay;
            while(Date.now() < delayUntil);
            func();
        }

        setTimeout(hello, 0);
        setTimeout(bye, 1000);
        sleep(() => { console.log("sleep until 3sec")}, 3000);
        sleep(() => { console.log("sleep until 1sec")}, 1000);

    </script>
</body>
</html>

๋‹ต์•ˆ ์ž‘์„ฑ