자바스크립트

[JS] 지연 실행과 커링

solfa 2024. 1. 25. 22:07

지연 실행과 커링은 다른 개념이지만 때때로 함께 사용되어 비동기적인 작업을 다루거나 코드의 가독성과 유지보수성을 높이는 데 활용될 수 있다.

커링 (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'`이 출력된다.

728x90