๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…

 

GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…

๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…. Contribute to yjs03057/33-js-concepts development by creating an account on GitHub.

github.com

 

์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์— ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์˜ˆ์•ฝ ์‹คํ–‰(ํ˜ธ์ถœ)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ 'ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง(scheduling a call)'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ช…์„ธ์„œ์—๋Š” setTimeout๊ณผ setInterval์ด ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋Š” ์•Š์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ €์™€ node.js๋ฅผ ํฌํ•จํ•œ Javascript ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ ๋Œ€๋ถ€๋ถ„์ด ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

setTimeout

setTimeout ๋ฌธ๋ฒ•(Syntax)

let timerId = setTimeout(func|code, [delay], [arg1], [arg2], ...);

setTimeout ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter)

func|code

  • ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ฝ”๋“œ๋กœ, ํ•จ์ˆ˜ ๋˜๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด ์ž๋ฆฌ์—” ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉฐ ๋ฌธ์ž์—ด๋„ ๋“ค์–ด๊ฐ€์ง€๋งŒ ์ถ”์ฒœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

delay

  • ์‹คํ–‰ ์ „ ๋Œ€๊ธฐ ์‹œ๊ฐ„์œผ๋กœ, ๋‹จ์œ„๋Š” ๋ฐ€๋ฆฌ์ดˆ(millisecond, 1000๋ฐ€๋ฆฌ์ดˆ = 1์ดˆ)์ด๋ฉฐ ๊ธฐ๋ณธ ๊ฐ’์€ 0์ž…๋‹ˆ๋‹ค.

arg1, arg2...

  • ํ•จ์ˆ˜์— ์ „๋‹ฌํ•  ์ธ์ž๋“ค(arguments). IE9 ์ดํ•˜์—์„œ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

setTimeout ์‚ฌ์šฉ ์˜ˆ์‹œ

  • ์ธ์ž์—†๋Š” ํ•จ์ˆ˜
function sayHello() {
  alert('Hello!')
}

setTimeout(sayHello, 1000); // 1์ดˆ ๋’ค์— sayHello()๋ฅผ ์‹คํ–‰์‹œํ‚ด
  • ์ธ์ž ์žˆ๋Š” ํ•จ์ˆ˜
function sayHello(name) {
  alert('Hello ' + name + '!')
}

setTimeout(sayHello, 1000, 'eun'); // Hello eun!

sayHello ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜(Parameter) ์ธ์ž๋กœ eun์„ ๋„˜๊ธฐ๊ณ  ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

clearTimeout์œผ๋กœ ์Šค์ผ€์ค„๋ง ์ทจ์†Œํ•˜๊ธฐ

  • setTimeout์„ ํ˜ธ์ถœํ•˜๋ฉด 'ํƒ€์ด๋จธ ์‹๋ณ„์ž(timer identifier)'๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, setTimeout์˜ timerId๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค์ผ€์ค„๋ง์„ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” clearTimeout ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
// ๊ธฐ๋ณธ ๋ฌธ๋ฒ•
let timerId = setTimeout(...);
clearTimeout(timerId);
// ์‚ฌ์šฉ ์˜ˆ์‹œ
let timerId = setTimeout(() => alert("์•„๋ฌด๋Ÿฐ ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."), 1000);
alert(timerId); // ํƒ€์ด๋จธ ์‹๋ณ„์ž

clearTimeout(timerId);
alert(timerId); // ์œ„ ํƒ€์ด๋จธ ์‹๋ณ„์ž์™€ ๋™์ผํ•จ (์ทจ์†Œ ํ›„์—๋„ ์‹๋ณ„์ž์˜ ๊ฐ’์€ null์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋ฉด ํƒ€์ด๋ฐ ์‹๋ณ„์ž๊ฐ€ ์ˆซ์ž๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๊ณ , clearTimeout์œผ๋กœ ์Šค์ผ€์ค„๋ง์ด ์ทจ์†Œ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

setInterval

setInterval ๋ฉ”์†Œ๋“œ๋Š” setTimeout๊ณผ ๋™์ผํ•œ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

let timerId = setInterval(func|code, [delay], [arg1], [arg2], ...);
  • ์ธ์ž ์—ญ์‹œ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ, setTimeout์€ ํ•จ์ˆ˜๋ฅผ ๋‹จ ํ•œ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜์ง€๋งŒ, setInterval์€ ํ•จ์ˆ˜๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์ค‘๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” clearInterval(timerId)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
// 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์คŒ
let timeId = setInterval(() => alert('๋˜‘๋”ฑ๋˜‘๋”ฑ'), 2000);

// 5์ดˆ ํ›„์— ์ •์ง€
setTimeout(() => { clearInterval(timeId); alert('์‹œ๊ณ„ ๋ฐฅ ์ฃผ์„ธ์—ฌ'); }, 6000);

์ค‘์ฒฉ setTimeout

ํ•จ์ˆ˜๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ setInterval ํ•จ์ˆ˜ ์ด์™ธ์—๋„ ์ค‘์ฒฉ setTimeout์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

/* setInterval์„ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ค‘์ฒฉ setTimeout์„ ์‚ฌ์šฉํ•จ
let timerId = setInterval(() => alert('์งธ๊น'), 2000); */

let timerId = setTimeout(function tick() {
  alert('์งธ๊น');
  timerId = setTimeout(tick, 2000); // (*)
}, 2000);

์ค‘์ฒฉ setTimeout์€ setInterval ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ์ž‘๋™๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋‹ค์Œ ํ˜ธ์ถœ์„ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์กฐ์ •ํ•ด ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

5์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ๊ณผ๋„ํ•œ ์š”์ฒญ์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ๊ณผ๋ถ€ํ•˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค๋ฉด ์š”์ฒญ ๊ฐ„๊ฒฉ์„ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒ๋‹ˆ๋‹ค.

let delay = 5000;

let timerId = setTimeout(function request() {
  ...์š”์ฒญ ๋ณด๋‚ด๊ธฐ...

  if (์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜๋กœ ์ธํ•œ ์š”์ฒญ ์‹คํŒจ) {
    // ์š”์ฒญ ๊ฐ„๊ฒฉ์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
    delay *= 2;
  }

  timerId = setTimeout(request, delay);

}, delay);

์ด ๋ฐฉ๋ฒ•์€ CPU ์†Œ๋ชจ๊ฐ€ ๋งŽ์€ ์ž‘์—…์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ž‘์—…์„ ์œ ๋™์ ์œผ๋กœ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ค‘์ฒฉ setTimeout์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ง€์—ฐ ๊ฐ„๊ฒฉ์„ ๋ณด์žฅํ•˜์ง€๋งŒ setInterval์€ ์ด๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์˜ˆ์‹œ. setInterval ์‚ฌ์šฉ

let i = 1;
setInterval(function() {
  func(i++);
}, 100);

๋‘ ๋ฒˆ์งธ ์˜ˆ์‹œ. setTimeout ์‚ฌ์šฉ

let i = 1;
setTimeout(function run() {
  func(i++);
  setTimeout(run, 100);
}, 100);

setInterval

setInterval์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‚ด๋ถ€ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ func(i++)์„ 100ms๋งˆ๋‹ค ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

setTimeout

ํ•จ์ˆ˜์™€ ํ•จ์ˆ˜์˜ ์‹คํ–‰์‚ฌ์ด์˜ ๋นˆ ์„ ์ด ์ง€์—ฐ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
setInterval๊ณผ setTimeout์˜ ์ง€์—ฐ์‹œ๊ฐ„์ด ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ฆ‰, setInterval์„ ์‚ฌ์šฉํ•˜๋ฉด func ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‚ฌ์ด์˜ ์ง€์—ฐ ๊ฐ„๊ฒฉ์ด ์‹ค์ œ ๋ช…์‹œํ•œ ๊ฐ„๊ฒฉ์ธ 100ms ๋ณด๋‹ค ์งง์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์ด๋Š” func์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ์†Œ๋ชจ๋˜๋Š” ์‹œ๊ฐ„๋„ ์ง€์—ฐ ๊ฐ„๊ฒฉ์— ํฌํ•จ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งŒ์•ฝ func์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๋ช…์‹œ๋œ ์ง€์—ฐ ๊ฐ„๊ฒฉ์ธ 100ms๋ณด๋‹ค ๋” ๊ธธ๋‹ค๋ฉด ์—”์ง„์€ func์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ํ™•์ธ ํ›„ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์˜ค๋ฒ„๋์œผ๋ฉด ๋‹ค์Œ ํ˜ธ์ถœ์„ ๋ฐ”๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ค‘์ฒฉ setTimeout์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ๋ช…์‹œ๋œ ์ง€์—ฐ ์‹œ๊ฐ„(100ms)์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค.
์ด์ „ ํ•จ์ˆ˜์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ ์ดํ›„์— ๋‹ค์Œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๊ณ„ํš์ด ์„ธ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋Œ€๊ธฐ ์‹œ๊ฐ„์ด 0์ธ setTimeout

setTimeout(func, 0)์ด๋‚˜ setTimeout(func)์„ ์‚ฌ์šฉํ•˜๋ฉด setTimeout์˜ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ 0์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๊ธฐ ์‹œ๊ฐ„์ด 0์œผ๋กœ ์„ค์ •๋˜๋ฉด func์„ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ์ด๋•Œ ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์Šค์ผ€์ค„ ์ฒ˜๋ฆฌ๊ฐ€ ์ข…๋ฃŒ๋œ ์ดํ›„์— ์Šค์ผ€์ค„๋งํ•œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฐ ํŠน์ง•์„ ์ด์šฉํ•ด ํ˜„ ์Šค์ผ€์ค„์ด ์ข…๋ฃŒ๋œ ์งํ›„ ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

setTimeout(() => console.log("World"));

console.log("Hello");

์œ„ ์ฝ”๋“œ๋Š” ์ฝ˜์†”์— Hello๊ฐ€ ๋จผ์ € ์ถœ๋ ฅ๋œ ํ›„ World๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
World๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ•จ์ˆ˜๋Š” ๋Œ€๊ธฐ์‹œ๊ฐ„ 0์„ ๊ฐ€์ ธ ๋ฐ”๋กœ ๋ฉ”์‹œ์ง€ ํ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
์ดํ›„ ์ฝ˜์†”์— Hello๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ฝœ ์Šคํƒ์— ์ถ”๊ฐ€๋˜๊ณ  ์ด ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์ดํ›„ ์ด๋ฒคํŠธ ๋ฃจํ”„๊ฐ€ ์ฝœ ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•œ ํ›„ ๋ฉ”์‹œ์ง€ ํ์— ๋‹ด๊ฒจ์žˆ๋˜ World ์ถœ๋ ฅ ํ•จ์ˆ˜๋ฅผ ์ฝœ ์Šคํƒ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ World ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

requestAnimationFrame

Javascript์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” new Date()๋ฅผ ์‚ฌ์šฉํ•œ ํƒ€์ด๋จธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์˜ ์‹œ์ž‘ ์ง€์ ๊ณผ ์ข…๋ฃŒ ์‹œ์ ์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ๋ฒ•์€ ์ฝœ ์Šคํƒ์ด ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋•Œ requestAnimationFrame() ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

requestAnimationFrame ํ•จ์ˆ˜๋Š” ๋ฐ˜๋ณตํ•  ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
requestAnimationFrame ํ•จ์ˆ˜์˜ ์žฅ์ 

  • ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™์ž‘ ๋ฐ ๋น„ํ™œ์„ฑํ™” ์‹œ ์ค‘์ง€
  • ์ตœ๋Œ€ 1ms๋กœ ์ œํ•œ๋˜๋ฉฐ 1์ดˆ์— 60๋ฒˆ ๋™์ž‘
  • ๋‹ค์ˆ˜์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜์—๋„ ๋™์ผํ•œ ํƒ€์ด๋จธ๋ฅผ ์ฐธ์กฐ
// requestAnimationFrame ์˜ˆ์‹œ

!(function() {
  let start = new Date().getTime()
  let i = 1
  let counting = function() {
    let ts = new Date().getTime()
    if (ts - 1000 > start) {
      // console.log('End');
    } else {
      console.log(i++, ts)
      requestAnimationFrame(counting)
    }
  }
  requestAnimationFrame(counting)
})()

์œ„ ์ฝ”๋“œ๋Š” 1์ดˆ ๋™์•ˆ counting ํ•จ์ˆ˜๊ฐ€ 60๋ฒˆ๊นŒ์ง€๋งŒ ์‹คํ–‰๋˜๊ณ  ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์ฝœ ์Šคํƒ์ด ๋งŽ์•„์ง€๋Š” ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

requestAnimationFrame ํ•จ์ˆ˜๋ฅผ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” cancelAnimationFrame ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

let requestId = requestAnimationFrame(() => console.log('Hello World!'))
cancelAnimationFrame(requestId)

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ธ€

 

[OS] 3. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(Scheduling Algorithm) ์Šค์ผ€์ค„๋ง ์„ฑ๋Šฅ ํ‰๊ฐ€ ๊ธฐ์ค€ ์ผ๋ฐ˜์ ์œผ๋กœ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„๊ณผ ํ‰๊ท  ๋ฐ˜ํ™˜์‹œ๊ฐ„์ด ์ด์šฉ๋จ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„(Average Waiting Time) :

eun-ng.tistory.com

 

setTimeout๊ณผ setInterval์„ ์ด์šฉํ•œ ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง

 

ko.javascript.info

 

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!