๐ป Development/JavaScript
[JavaScript] ๋น๋๊ธฐ
ahyeon7
2022. 11. 25. 01:26

๋น๋๊ธฐ ์ฝ๊ฒ ์ดํดํ๊ธฐ
- ์ปคํผ์์์ ์ปคํผ๋ฅผ ์ฃผ๋ฌธํ๋ ค๊ณ ์ค์ ์ ๋ค๊ณ ํ์ ๋, ๋จผ์ ์จ A๊ฐ ์ฃผ๋ฌธํด์ ์ปคํผ๋ฅผ ๋ฐ์ ๋๊น์ง B๋ ์ฃผ๋ฌธ์กฐ์ฐจ ํ ์ ์๋ค๊ณ ํ๋ฉด ์ฐ๋ฆฌ๋ ์ด๋ฅผ blocking์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
=> ํ๋์ ์์ ์ด ๋๋ ๋๊น์ง ์ด์ด์ด์ง๋ ์์ ์ ๋ง๋๋ค!
- [B๋ A๊ฐ ์ปคํผ๋ฅผ ๋ฐ๋ ์์ ๊ณผ B๊ฐ ์ฃผ๋ฌธ์ ์์ํ๋ ์์ ์ด ๊ฐ๋ค]
=> ์ด์ ๊ฐ์ ์ํฉ์ "๋๊ธฐ์ "์ด๋ค๋ผ๊ณ ํ๋ค.
callback review
- ๋ค๋ฅธ ํจ์(A)์ ์ ๋ฌ์ธ์๋ก ๋๊ฒจ์ฃผ๋ ํจ์
- parameter๋ฅผ ๋๊ฒจ๋ฐ๋ ํจ์(A)๋ callback ํจ์(B)๋ฅผ ํ์์ ๋ฐ๋ผ ์ฆ์ ์คํํ ์๋, ์๋๋ฉด ๋์ค์ ์คํํ ์๋ ์๋ค
function B(){
console.log('called at the back!');
}function A(callback){
callback(); // callback === B
}
A(B);
- callback in action: ๋ฐ๋ณต ์คํํ๋ ํจ์ (iterator)
[1, 2, 3].map(function(ele, idx){
return ele * ele;
});
- callback in action: ์ด๋ฒคํธ์ ๋ฐ๋ฅธ ํจ์ (event handler)document.querySelector('#btn').addEventListener('click', function(e){
console.log('button clicked');
});
blocking
- ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋๋ค
- (์ ํ๋ก ์๋ก ๋ค๋ฉด) ํ๋ ์ผ์ ๋ฉ์ถ๊ณ ๋ฐ์์ผ ํ๋ค
non-blocking
- ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๊ฐ ๋์์ ์ผ์ด๋์ง ์๋๋ค
- (๋ฌธ์๋ก ์๋ก ๋ค๋ฉด) ํ์ธ ํ, ๋์ค์ ๋ต์ฅํ ์๋ ์๋ค