본문 바로가기
IT

[javascript] JavaScript에서 invoke와 resolve의 개념

by Echinacea 2025. 2. 27.
반응형

JavaScript에서 invoke와 resolve는 비동기 프로그래밍 및 함수 실행과 관련된 개념입니다. 특히, resolve는 Promise와 함께 사용되며, invoke는 특정한 라이브러리에서 동적으로 함수를 실행하는 방식으로 활용됩니다.


 

 

1️⃣ resolve란? (Promise와 함께 사용)

resolve는 **Promise(프로미스)**에서 사용되는 함수로, 비동기 작업이 성공적으로 완료되었을 때 결과 값을 반환하는 역할을 합니다.

 

✅ 기본적인 resolve 사용 예시

const myPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("작업이 완료되었습니다!");
  }, 2000);
});

myPromise.then((result) => {
  console.log(result); // "작업이 완료되었습니다!"
});

 

🔹 동작 방식

  1. new Promise를 생성할 때, 첫 번째 매개변수로 resolve와 reject를 받습니다.
  2. setTimeout을 사용하여 2초 후에 resolve("작업이 완료되었습니다!")가 실행됩니다.
  3. resolve가 실행되면 .then() 내부의 함수가 실행되며 "작업이 완료되었습니다!"를 출력합니다.

 

 

✅ resolve를 활용한 비동기 함수 (async/await)

function fetchData() {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve("데이터를 가져왔습니다!");
    }, 1000);
  });
}

async function getData() {
  const data = await fetchData();
  console.log(data); // "데이터를 가져왔습니다!"
}

getData();

 

🔹 핵심 개념

  • resolve를 사용하여 데이터를 비동기적으로 반환할 수 있습니다.
  • await를 사용하면 resolve된 값을 기다린 후 실행됩니다.

 

 

2️⃣ invoke란? (함수 실행 관련 개념)

 

✅ invoke의 기본 개념

invoke는 일반적으로 함수를 실행(호출)하는 방법을 의미합니다. 자바스크립트 자체에는 invoke라는 기본 메서드는 없지만, 특정 라이브러리에서 함수 실행을 의미하는 용도로 사용됩니다.

 

✅ invoke를 사용하는 대표적인 예: Lodash 라이브러리

Lodash는 자바스크립트 유틸리티 라이브러리로, _.invoke() 메서드를 제공하여 객체 내의 함수를 실행할 수 있도록 합니다.

const obj = {
  greet: function(name) {
    return `Hello, ${name}!`;
  }
};

console.log(_.invoke(obj, 'greet', 'Alice')); // "Hello, Alice!"

 

🔹 Lodash _.invoke의 동작 방식

  1. _.invoke(객체, '메서드명', 매개변수)를 사용하여 객체 내부의 특정 메서드를 호출할 수 있습니다.
  2. 이 방법은 동적으로 함수 실행을 제어할 때 유용합니다.

 

 

📌 resolve와 invoke의 차이점

 

개념 설명 예제

resolve Promise를 완료하고 값을 반환하는 함수 resolve("완료") → .then(result => console.log(result))
invoke 함수를 실행하는 개념 (특정 라이브러리에서 제공) _.invoke(obj, 'methodName', arg1, arg2)

 

 

3️⃣ 추가 설명: resolve와 reject

 

✅ reject란?

reject는 resolve와 반대로, Promise가 실패했을 때 호출되는 함수입니다. 예를 들어, HTTP 요청이 실패했거나 데이터가 유효하지 않을 경우 reject를 사용하여 오류를 처리할 수 있습니다.

const myPromise = new Promise((resolve, reject) => {
  let success = false; // 실패 상황
  if (success) {
    resolve("작업이 성공했습니다!");
  } else {
    reject("작업이 실패했습니다!");
  }
});

myPromise
  .then(result => console.log(result))
  .catch(error => console.log("오류 발생: ", error));

 

🔹 reject의 동작 방식

  1. reject("작업이 실패했습니다!")가 실행되면 .catch()가 오류 메시지를 받습니다.
  2. .then()이 실행되지 않고 .catch()가 실행됩니다.
  3. 이 방법을 통해 비동기 작업의 오류를 효율적으로 처리할 수 있습니다.

 

 

🚀 정리

개념 설명 예제

resolve Promise를 성공적으로 완료하는 함수 resolve("완료") → .then(result => console.log(result))
reject Promise가 실패했을 때 오류를 반환하는 함수 reject("실패") → .catch(error => console.log(error))
invoke 특정 라이브러리에서 함수를 실행하는 기능 _.invoke(obj, 'methodName', arg1, arg2)

📌 resolve는 비동기 작업을 완료하는 역할을 하며, invoke는 특정 라이브러리에서 함수를 실행하는 방식으로 활용될 수 있습니다. 또한, reject를 사용하면 비동기 작업의 오류를 처리할 수 있습니다.

 

반응형

댓글