ํจ์์ ์ธ์๊ฐ ๋๋ ํจ์์ธ, callback ํจ์์ ๋ํด์ ์์๋ณธ๋ค. callback ํจ์์ ๊ฒฝ์ฐ
node.js์์ ๋งค์ฐ ์ค์ํ๊ฒ ์ฌ์ฉ๋๋ ๊ฐ๋
์ด๋ฉฐ, ์ดํ ๋๊ธฐ์ ๋น๋๊ธฐ๋ฅผ ์ดํดํ ๋๋ ํต์ฌ์ด ๋๊ธฐ
๋๋ฌธ์ ์์ฃผ ์ฌ์ฉํ์ฌ ์ตํ๋๋ฉด ์ข๋ค.
๋จผ์ callbackํจ์์ ์ ์์ ๋ํด ์์๋ณด๊ณ , ์ค์ ์์ฉ ์์์ ์ข
๋ฅ๋ณ callbackํจ์์ ์ ์ฉ, ์ต๋ช
์ callbackํจ์์ ๋ํด ์์๋ณธ๋ค.
โ ํจ์์ ์ธ์๋ก ๋ณ์๋ฅผ ๋ฐ์ ์๋ ์์ผ๋, ์ด ๋ฟ ์๋๋ผ ํจ์๋ฅผ ๋ฐ์ ์๋ ์๋ค.
โ ์ด๋ ์ธ์๋ก ์ฌ์ฉ๋๋ ํจ์๋ฅผ callbackํจ์๋ผ๊ณ ํ๋ค.
โ ์๋ฅผ๋ค์ด ํ๋จ์ ์ฝ๋์์ sort๋ผ๋ ํจ์๋ b๋ผ๋ ํจ์๋ฅผ callback ํจ์๋ก ํธ์ถํ๋ค.
a = [3,1,2];
function b(v1, v2){console.log(v1,v2); return 0;}
a.sort(b);
์ ์ํ callbackํจ์๋ ๋ด๊ฐ ํธ์ถํ๋๊ฒ ์๋๋ผ, sort๋ผ๋ ํจ์๊ฐ ํ์ํ ๋๋ง๋ค ์์์ ํธ์ถํ๋ค.
๋ด๊ฐ ๋ง๋ callbackํจ์๋ ๋ด๊ฐ ํธ์ถํ ๊ฒ์ด ์๋๋ผ, ๋ค๋ฅธ ๋๊ตฐ๊ฐ์ ์ํด ์ธ์ ๊ฐ ํธ์ถ๋นํ ํจ์๋ค. ๊ทธ๋ฐ ์๋ฏธ์์ callback์ด๋ผ๊ณ ํ ์๋ ์์ ๊ฒ์ด๋ค !
๐ call back ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ๋ ํจ์
๋งค๊ฐ๋ณ์๊ฐ ์๋ callbackํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋จ๊ณผ ๊ฐ์ ํํ๋ก ์ ์ํ ์ ์๋ค.
ํ๋ผ๋ฏธํฐ๋ก๋ callbackํจ์์ ์ด๋ฆ๋ง์ ์
๋ ฅํ๋ฉด ๋๋ค.
function sort(callback) {callback();};
callbackํจ์๊ฐ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ์๋ ์์ ๊ฐ์ด sortํจ์์์ callbackํจ์์ ํ๋ผ๋ฏธํฐ๋ ๋ฐ์์ callbackํจ์์ ์ธ์๋ก ์ ๋ฌํ ์๋ ์๋ค.
function sort(callback, v1, v2) {callback(v1, v2);};
๋ฐฐ์ด์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์์ callbackํจ์๋ฅผ ์ ์ฉํ ์๋ ์๋ค.
function sort(callback, arr) {for ~ { callback()} };
๋๋ sort์์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ง ์๊ณ sortํจ์ ๋ด๋ถ์์ ์์์ ์ธ์๋ฅผ ์ ๋ฌํ ์๋ ์๋ค.
function sort(callback) {callback(1,3); };
๐ ์ต๋ช ์ callback ํจ์
์ด๋ฐ ์์ผ๋ก ๋ฐ๋ก callbackํจ์์ ์ด๋ฆ์ ์ฃผ์ด์ฃผ๊ณ sort์ ์ธ์๋ก ๋ฐ์์ฌ ์๋ ์๋ค.
function a(v1, v2) {return v1-v2 ;};
function sort(a);
๋๋ ์ฌ๋ฌ ํจ์์์ callbackํจ์๋ฅผ ์ธ์๋ก ์ฌ์ฉํ ์์ ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฆ ์์ด ๋ฐ๋ก ์ธ์๋ก ๋ฃ์ ์๋ ์๋ค.
function sort(function (v1, v2) {return v1-v2 ;});
๐ ์ธ์(Argument) VS ๋งค๊ฐ๋ณ์(Parameter)
์ธ์๋ ์ด๋ค ํจ์๋ฅผ โํธ์ถโ์์ โ์ ๋ฌ ๋๋ ๊ฐโ์ ๋งํ๊ณ ,
๋งค๊ฐ ๋ณ์๋ ๊ทธ ์ ๋ฌ๋ ์ธ์๋ฅผ ๋ฐ์๋ค์ด๋ ๋ณ์๋ค.
์ฆ ์ธ์๋ ๊ฐ์ ์๋ฏธํ๊ณ , ๋งค๊ฐ ๋ณ์๋ ๋ง๊ทธ๋๋ก ๊ทธ ๊ฐ์ด ๋ด๊ธด ๋ณ์๋ค.