Block, Non Block, Sync, Async - ChoDragon9/posts GitHub Wiki
์ ์ดํ๋ฆ์ ๋ธ๋กํน์ด๋ค.
- ํ๋ก๊ทธ๋จ์ ์คํ๋๋ฉด ๋์ค์ ๋ฉ์ถฐ์ง์ง ์๊ณ ๋๊น์ง ์คํ๋จ
- ํ๋ซํผ์ ์์ ์ฑ์ ์ํด ๋ธ๋ก๋๋ ์๊ฐ์ด ๊ธธ๋ฉด ๊ฐ์ ์ข ๋ฃ์ํด(5์ด ์ ํ)
for(const i of (function*(){
let i = 0;
while(true) yield i++;
})()) console.log(i);
๋ธ๋ก
- ์ฆ์ ํ๋ก์ฐ์ ์ด๊ถ์ ๋ฐํํ์ง ์์
- ๋๋ฐ์ด์ค๋ค์ 60fps๋ก ๋์คํ๋ ์ด๋จ
- 1fps์ ๋๋ ์ด๋ฅผ ์๊ธฐ๋ฉด ๋ธ๋กํน์ ์ผ์ผ์ผฐ๋ค๊ณ ํ๋ค.
const f = v=>{
let i = 0;
while(i++ < v);
return i;
}
f(10);
f(100000000000000000000000);
- ์ด ๊ฒฝ์ฐ ๋ธ๋กํน์ด ๋ฐ์๋๋ค.
- ๋ฐฐ์ด์ํ, ์ ๋ ฌ => ๋ฐฐ์ดํฌ๊ธฐ์ ๋ฐ๋ผ
- DOM ์ํ => DOM์ ํ์๊ตฌ์กฐ์ ๋ฐ๋ผ
- ์ด๋ฏธ์งํ๋ก์ธ์ฑ => ์ด๋ฏธ์งํฌ๊ธฐ์ ๋ฐ๋ผ
์๋ฐ์คํฌ๋ฆฝํธ ์ฐ๋ ๋
- ๋ฉ์ธ ์ ์ ์ธํฐํ์ด์ง ์ฐ๋ ๋ 1๊ฐ
- ํ๋ ์(๋ช ๋ นํ)
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฐ๋ ๋ n๊ฐ
- ์น ์์ปค ์ฐ๋ ๋
๋ธ๋กํน ํํผ
๋ธ๋กํน ํจ์
const looper = (n, f)=>{
for(let i = 0; i < n; i++) f(i);
};
- ํ์ ์ฌ๋ผ์ด์ค ๋ฉ๋ด์ผ
const looper = (n, f, slice = 3) => {
let limit = 0,
i = 0;
const runner = _ => {
while (i < n) {
if (limit++ < slice) f(i++);
else {
limit = 0;
requestAnimationFrame(runner);
break;
}
}
};
requestAnimationFrame(runner);
};
- ํ์ ์ฌ๋ผ์ด์ค ์คํ
const looper = (n, f, ms = 5000, i = 0) => {
let old = performance.now(),
curr;
const runner = curr => {
while (i < n) {
if (curr - old < ms) f(i++);
else {
old = performance.now();
requestAnimationFrame(runner);
break;
}
}
};
requestAnimationFrame(runner);
};
- ์น ์์ปค
const backRun = (f, end, ...arg) => {
const blob = new Blob([`onmessage =e=>postMessage((${f})(e.data));`], {
type: 'text/javascript'
});
const url = URL.createObjectURL(blob);
const worker = new Worker(url); //new Worker("some.js");
worker.onmessage = e => end(e.data);
worker.onerror = e => end(null);
worker.postMessage(arg);
};
๋ ผ ๋ธ๋กํน
์๋ธ๋ฃจํด์ด ์ฆ์ ํ๋ก์ฐ ์ ์ด๊ถ์ ๋ด๋๋ ๊ฒ
consta = 123;
looper(12, console.log);
backRun(v => v[0] + v[1], console.log, 3, 5);
console.log(a); //์ด์จ๋ ์ฝ์์123๋ถํฐ์ถ๋ ฅ
์ฑํฌ
์๋ธ๋ฃจํด์ด ์ฆ์ ๊ฐ์ ๋ฐํํจ
const double = v=>v*2;
console.log(double(2)); //4
์ด์ฑํฌ
์๋ธ๋ฃจํด์ด ์ฝ๋ฐฑ์ ํตํด ๊ฐ์ ๋ฐํํจ
const double = (v, f)=>f(v*2);
double(2, console.log); //4
์์ฝ
- ์ฑํฌ : ์๋ธ๋ฃจํด์ด ์ฆ์ ๊ฐ์ ๋ฐํํจ
- ์ด์ฑํฌ : ์๋ธ๋ฃจํด์ด ์ฝ๋ฐฑ์ ํตํด ๊ฐ์ ๋ฐํํจ
- ๋ธ๋ก : ์ฆ์ ํ๋ก์ฐ์ ์ด๊ถ์ ๋ฐํํ์ง ์์
- ๋ ผ๋ธ๋ก : ์ฆ์ ํ๋ก์ฐ์ ์ด๊ถ์ ๋ฐํํจ
- ์ฑํฌ&๋ธ๋ก : normalAPI, legacyAPI
- ์ฑํฌ&๋ ผ๋ธ๋ก : old API(img.complete)
- ์ด์ฑํฌ&๋ธ๋ก : TRAP
- ์ด์ฑํฌ&๋ ผ๋ธ๋ก : modern API