Notice
Recent Posts
Recent Comments
Link
SeouliteLab
jQuery의 deferred.pipe() 메서드: 연속된 비동기 작업 처리 예제와 설명 본문
jQuery의 deferred.pipe()
메서드는 Deferred 객체의 비동기 작업을 연속적으로 처리하는 데 사용됩니다. 이 메서드를 사용하면 한 Deferred 객체의 결과를 다른 Deferred 객체의 입력으로 전달하여 연속된 비동기 작업을 순차적으로 처리할 수 있습니다. 이제 deferred.pipe()
메서드에 대해 자세히 알아보고 예제를 통해 이해해보겠습니다.
deferred.pipe()
메서드 이해하기
deferred.pipe()
메서드는 한 Deferred 객체의 결과를 다른 Deferred 객체의 입력으로 전달하여 비동기 작업을 연속적으로 처리합니다. 이 메서드를 사용하여 체이닝된 비동기 작업을 효율적으로 구성할 수 있습니다.
구문:
deferred.pipe(doneFilter [, failFilter [, progressFilter]]);
doneFilter
: 성공 시 호출될 함수 또는 Deferred 객체입니다.failFilter
: 실패 시 호출될 함수 또는 Deferred 객체입니다.progressFilter
: 진행 상태를 처리할 함수입니다.
이제 몇 가지 예제를 통해 이 메서드의 사용법을 살펴보겠습니다.
예제:
예제 1: 연속된 비동기 작업 처리
function asyncTask1() {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve("첫 번째 작업 완료");
}, 1000);
return deferred.promise();
}
function asyncTask2(data) {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve(data + ", 두 번째 작업 완료");
}, 1000);
return deferred.promise();
}
asyncTask1().pipe(asyncTask2).done(function(result) {
console.log(result); // 첫 번째 작업 완료, 두 번째 작업 완료
});
출력:
// 2초 후
첫 번째 작업 완료, 두 번째 작업 완료
예제 2: 실패 처리 추가
function asyncTask1() {
var deferred = $.Deferred();
setTimeout(function() {
deferred.reject("첫 번째 작업 실패");
}, 1000);
return deferred.promise();
}
function asyncTask2(data) {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve(data + ", 두 번째 작업 완료");
}, 1000);
return deferred.promise();
}
asyncTask1().pipe(null, asyncTask2).fail(function(error) {
console.log("에러 발생:", error); // 에러 발생: 첫 번째 작업 실패
});
출력:
// 1초 후
에러 발생: 첫 번째 작업 실패
예제 3: 진행 상태 처리 추가
function asyncTask1() {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve("첫 번째 작업 완료");
}, 1000);
return deferred.promise();
}
function asyncTask2(data) {
var deferred = $.Deferred();
setTimeout(function() {
deferred.resolve(data + ", 두 번째 작업 완료");
}, 1000);
return deferred.promise();
}
asyncTask1().pipe(asyncTask2).progress(function(progress) {
console.log("진행 중:", progress); // 진행 중: 첫 번째 작업 완료
}).done(function(result) {
console.log(result); // 첫 번째 작업 완료, 두 번째 작업 완료
});
출력:
// 1초 후
진행 중: 첫 번째 작업 완료
// 2초 후
첫 번째 작업 완료, 두 번째 작업 완료
deferred.pipe()
메서드를 사용하면 한 Deferred 객체의 결과를 다른 Deferred 객체의 입력으로 전달하여 연속된 비동기 작업을 효율적으로 처리할 수 있습니다. 이를 통해 비동기 작업을 체이닝하여 구성할 때 유용하게 활용할 수 있습니다.
'프로그래밍' 카테고리의 다른 글
jQuery의 deferred.promise() 메서드: 비동기 작업 결과 처리와 관리 (0) | 2024.03.31 |
---|---|
jQuery의 deferred.progress() 메서드: 비동기 작업의 진행 상태 모니터링 (0) | 2024.03.31 |
jQuery의 deferred.notifyWith() 메서드: 컨텍스트 지정 예제와 설명 (0) | 2024.03.31 |
jQuery의 deferred.notify() 메서드: 진행 상태 업데이트 예제와 설명 (0) | 2024.03.31 |
jQuery의 deferred.isResolved() 메서드: 사용법과 예제 (0) | 2024.03.31 |