SeouliteLab

jQuery의 deferred.promise() 메서드: 비동기 작업 결과 처리와 관리 본문

프로그래밍

jQuery의 deferred.promise() 메서드: 비동기 작업 결과 처리와 관리

Seoulite Lab 2024. 3. 31. 00:29

jQuery의 deferred.promise() 메서드는 Deferred 객체의 상태와 결과를 처리하는 데 사용됩니다. 이 메서드를 사용하여 비동기 작업의 결과를 다루고, 성공 및 실패 콜백을 지정할 수 있습니다. 이제 deferred.promise() 메서드에 대해 자세히 알아보고 예제를 통해 이해해보겠습니다.

deferred.promise() 메서드 이해하기

deferred.promise() 메서드는 Deferred 객체를 반환합니다. 이를 통해 비동기 작업의 상태와 결과를 관리하고 다룰 수 있습니다. 이 메서드를 사용하여 비동기 작업의 성공 및 실패에 대한 처리를 구성할 수 있습니다.

구문:

deferred.promise([target]);
  • target (선택사항): 선택적으로 지정된 객체에 Deferred 객체를 할당합니다.

예제:

예제 1: 성공 및 실패 콜백 지정

function asyncTask() {
  var deferred = $.Deferred();
  setTimeout(function() {
    // 비동기 작업 완료
    deferred.resolve("작업 완료");
    // 실패 시: deferred.reject("작업 실패");
  }, 2000);
  return deferred.promise();
}

var promise = asyncTask();

promise.done(function(result) {
  console.log("성공:", result); // 성공: 작업 완료
});

promise.fail(function(error) {
  console.log("실패:", error); // 실패: 작업 실패
});

출력:

// 2초 후
성공: 작업 완료

예제 2: Deferred 객체 반환

function asyncTask() {
  var deferred = $.Deferred();
  setTimeout(function() {
    deferred.resolve("작업 완료");
  }, 2000);
  return deferred.promise();
}

var promise = asyncTask();

console.log(promise); // Deferred 객체 반환

출력:

Deferred { state: "pending", always: function, then: function, ... }

예제 3: Deferred 객체를 다른 변수에 할당

function asyncTask() {
  var deferred = $.Deferred();
  setTimeout(function() {
    deferred.resolve("작업 완료");
  }, 2000);
  return deferred.promise();
}

var promise = asyncTask();

var anotherPromise = promise;

console.log(anotherPromise === promise); // true

출력:

true

deferred.promise() 메서드를 사용하면 Deferred 객체를 반환하여 비동기 작업의 상태와 결과를 효과적으로 처리할 수 있습니다. 이를 통해 비동기 작업을 효율적으로 관리하고 성공 및 실패에 대한 처리를 구성할 수 있습니다.