๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋ณธ๋ฌธ

๐Ÿ› ๏ธ๊ธฐ์ˆ  ๋Œ€๋น„

์ฝœ๋ฐฑ ํ•จ์ˆ˜

4:Bee 2024. 3. 13. 13:07
728x90

๊ธฐ์ˆ  ๋ฉด์ ‘ ๋•Œ ๋ฐ›์€ ์งˆ๋ฌธ์„ ํ† ๋Œ€๋กœ ์ž‘์„ฑํ•ด ๋ณด์•˜๋‹ค. ๊ต‰์žฅํžˆ ๊ธฐ์ดˆ์ ์ธ ๊ธฐ์ˆ ์„ ๋ฌผ์–ด๋ณด๋Š”๋ฐ ์Šต๊ด€์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ๋ฉด์ ‘ ๋•Œ ๋†“์น˜๊ฑฐ๋‚˜ ๋ช…ํ™•ํžˆ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.


#์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์—๊ฒŒ ์ธ์ž๋กœ ์ „๋‹ฌ ๋˜์–ด ํŠน์ • ์ƒํ™ฉ์ด๋‚˜ ์กฐ๊ฑด์— ๋„๋‹ฌ ํ•˜๋ฉด ํ˜ธ์ถœ, ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ฆ‰, ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜์—๊ฒŒ ์ž‘์—…์„ ์˜์กดํ•˜๊ณ , ๊ทธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํ•ด๋‹น ํ•จ์ˆ˜์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

## ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ์ ์ธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋”๋ณด๊ธฐ

## ๋น„๋™๊ธฐ

์ฝœ๋ฐฑํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ์ ์ธ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ํƒ€์ด๋จธ ์„ค์ •, http ์š”์ฒญ ๋“ฑ๊ณผ ๊ฐ™์ด ํŠน์ •ํ•œ ์ƒํ™ฉ์—์„œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ์ ์ธ ํŠน์ง•์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์ฆ‰, ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„์— ์ฒ˜๋ฆฌํ•  ์ž‘์—…์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ ๋˜๋ฉด ์ฆ‰์‹œ ๋‹ค์Œ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

## ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์˜ˆ์‹œ

๋”๋ณด๊ธฐ
// setTimeout์„ ์‚ฌ์šฉํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜
function delayedFunction(callback) {
    console.log("์‹œ์ž‘");
    setTimeout(function() {
        console.log("3์ดˆ ํ›„์— ์‹คํ–‰๋จ");
        callback(); // ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ํ˜ธ์ถœ
    }, 3000);
}

// ์ฝœ๋ฐฑ ํ•จ์ˆ˜
function callbackFunction() {
    console.log("์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ");
}

// delayedFunction ํ˜ธ์ถœ
delayedFunction(callbackFunction);

callbackFucntion์€ delayedFunction์„ ํ˜ธ์ถœํ•˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ delayedFunction์•ˆ์—๋Š” setTimeout์ด๋ผ๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.setTimeout์€ ๋˜ ๋‹ค์‹œ ์ธ์ž๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์žˆ๋‹ค. ์ข€ ๋” ์ง๊ด€์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

// setTimeout์„ ์‚ฌ์šฉํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜
function delayedFunction() {
    console.log("์‹œ์ž‘");
    setTimeout(function() {
        console.log("3์ดˆ ํ›„์— ์‹คํ–‰๋จ");
        function callbackFunction() { // ํ•จ์ˆ˜ ํ˜ธ์ถœ
          console.log("์ฝœ๋ฐฑ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ");
       }
       callbackFucntion();
    }, 3000);
}

// delayedFunction ํ˜ธ์ถœ
delayedFunction();

ํ˜„์žฌ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด setTimeout์€ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด๋ถ€์— callbackFunction์ด ์žˆ์œผ๋ฉฐ ํ•ด๋‹น setTimeout ๋‚ด๋ถ€์—์„œ ํ˜ธ์ถœ๋˜๊ณ  ์žˆ๋‹ค. ์ฆ‰, ๋‚ด๋ถ€์— ์žˆ๋Š” callbackFunction์€ setTimeout์˜ ์ธ์ž๋กœ ์ •์˜๋œ ์ต๋ช…ํ•จ์ˆ˜ ์•ˆ์— ์กฐ๊ฑด์ด ์ถฉ์กฑ ๋  ๋•Œ ํ˜ธ์ถœ,์‹คํ–‰ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝœ๋ฐฑํ•จ์ˆ˜๋กœ ๊ฐ„์ฃผ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ์•„๋ž˜์ฝ”๋“œ๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ๊ฐ„์ฃผํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

function test(){
  function call(){
       console.log('Call!');
    }
    call();
}

ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์ด ์ธ์ž๋กœ ์ „๋‹ฌ์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

function test(fn){
    console.log('true'); 
    call();
}
function call(){
    console.log('Call!');
    }
test(call);
728x90
Comments