setTimeout

์ •๋ฆฌ

  1. ๋ฌด๊ฑฐ์šด ์ž‘์—…์€ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    1. promise๋กœ ํ•ด๋„ ๋˜์ง€ ์•Š๋‚˜?

  2. ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋จผ์ € ๋ Œ๋”๋ง๋œ ํ›„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•˜๋‹ค

  3. settimout์„ 0์œผ๋กœ ํ•ด๋„ ์ตœ์†Œ 4ms๊ฐ€ ์ง€๋‚˜์•ผ ํ˜ธ์ถœ๋œ๋‹ค.

  4. queueMicrotask๊ฐ€ ์žˆ์ง€๋งŒ, IE์—ฃ์„œ ์ง€์› ์•ˆํ•œ๋‹ค.

๊ฐ„๋‹จํ•œ sleep ์ฝ”๋“œ

const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));

๋ถ„์‚ฐ ์ž‘์—…ํ•˜๊ธฐ. ๋Œ€์ถฉ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์˜์™ธ๋กœ ์ž˜๋œ๋‹ค.

const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay));

// dealy 10ms
// start ์‹œ์ž‘ 0
// end ๋ 1000
// n n๊ฐœ์”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ
// callback : (index) => void
async function divideProcess(delay,start,end,n,callback){

    let i = start;
    while(i<end+1){
        for(let k = 0; k < n+1;k++){
          if(i>=end+1) break;
          callback(i++);
        }
        await sleep(delay)
    }
}
divideProcess(100,50,100,4,console.log)

let i = 0;
while(i<10000){
    console.log(i++)
}

Last updated

Was this helpful?