지연 실행과 커링은 다른 개념이지만 때때로 함께 사용되어 비동기적인 작업을 다루거나 코드의 가독성과 유지보수성을 높이는 데 활용될 수 있다.
커링 (Currying)
커링은 다중 인자를 갖는 함수를 한 개의 인자를 받는 함수로 변환하는 기법이다. 커링을 통해 함수의 일부 인자를 미리 고정하고, 나머지 인자는 나중에 제공하여 함수를 실행할 수 있다. 이는 함수를 재사용하고 모듈화된 형태로 만들 수 있게 한다.
커링을 사용한 예제
const add = a => b => a + b;
const add5 = add(5);
console.log(add5(3)); // 8
console.log(add5(7)); // 12
지연 실행 (Delayed Execution)
지연 실행은 어떤 코드 블록이나 함수를 나중에 실행하도록 하는 패턴을 나타낸다. 주로 `setTimeout` 함수나 비동기적인 작업에서 활용된다. 이를 통해 특정 조건이나 시간이 지난 후에 코드를 실행할 수 있다.
지연 실행을 이용한 예제
setTimeout(() => {
console.log('Delayed execution after 1000ms');
}, 1000);
커링과 지연 실행을 함께 사용하는 경우
커링은 함수의 인자를 다루는 기법이며, 지연 실행은 코드 실행을 시간에 따라 관리하는 기법이다. 두 기법을 함께 사용할 때는 주로 비동기적인 상황에서 특정 함수를 커리화하여 나중에 호출하는 패턴을 만들어 사용한다. 예를 들면, 비동기적으로 어떤 작업이 완료된 후에 특정 함수를 호출하고자 할 때, 커링된 함수를 사용하여 지연 실행을 구현할 수 있다.
커링과 지연 실행을 함께 사용하는 예제
const delayedFunction = curry3((callback, timeout, value) => {
setTimeout(() => {
callback(value);
}, timeout);
});
const delayedLog = delayedFunction(console.log);
const logAfter1Second = delayedLog(1000);
logAfter1Second('Delayed execution');
- `delayedFunction`은 함수를 커리화하고, `setTimeout`을 사용하여 지연 실행을 구현한다. `delayedLog` 함수는 `console.log`를 지연 실행하는 함수로 변환되었다. 이후 `logAfter1Second`을 호출하면, 1초 후에 `'Delayed execution'`이 출력된다.
'자바스크립트' 카테고리의 다른 글
파일 효과적으로 가져오기 | script defer, async (0) | 2024.07.08 |
---|---|
BOM 이란? (0) | 2024.07.08 |
DOM 이란? (0) | 2024.07.08 |
[JS] 동적으로 객체 속성을 생성하기 (1) | 2024.01.28 |
자바스크립트 동기적 함수 쓰는 이유 (1) | 2024.01.03 |