> 웹 프론트엔드 > JS 튜토리얼 > jQuery_jquery에서 Deferred와 promise의 차이점

jQuery_jquery에서 Deferred와 promise의 차이점

WBOY
풀어 주다: 2016-05-16 15:06:39
원래의
1187명이 탐색했습니다.

지연과 약속의 차이점은 무엇인가요?

약속

Promise는 비동기 함수가 반환하는 객체입니다. 이러한 함수를 직접 작성하려면 deferred를 사용해야 합니다.

var promise = $.ajax({
url: "/myServerScript"
});
promise.done(mySuccessFunction); 
promise.fail(myErrorFunction); 
var promise = $.ajax({
url: "/myServerScript"
}); 
promise.then(mySuccessFunction,myErrorFunction); 
로그인 후 복사

Promise를 사용하면 다음과 같은 이점이 있습니다.

done() 및 failure() 함수를 여러 번 호출하고 다양한 콜백 함수를 사용할 수 있습니다. 애니메이션을 중지하는 콜백 함수, 새 AJAX 요청을 시작하는 콜백 함수, 수신된 데이터를 사용자에게 표시하는 콜백 함수가 있을 수 있습니다.

var promise = $.ajax({ url: "/myServerScript" });
promise.done(myStopAnimationFunction); promise.done(myOtherAjaxFunction); 
promise.done(myShowInfoFunction); promise.fail(myErrorFunction);
로그인 후 복사

AJAX 호출이 완료된 후에도 done(), failure() 함수를 계속 호출할 수 있으며, 콜백 함수를 즉시 실행할 수 있습니다. 서로 다른 상태 사이에 변수의 혼동이 없습니다. AJAX 호출이 종료되면 성공 또는 실패 상태를 유지하며 이 상태는 변경되지 않습니다.

Promise를 병합할 수 있습니다. 때때로 두 개의 AJAX 요청을 동시에 수행해야 하고 두 AJAX 요청이 모두 성공할 때 함수를 호출하려는 경우가 있습니다. 이 작업을 수행하려면 새로운 $.when() 함수를 사용해야 합니다.

var promise1 = $.ajax("/myServerScript1"); 
var promise2 = $.ajax("/myServerScript2");
$.when(promise1, promise2).done(function(xhrObject1, xhrObject2) { // 处理两个XHR对象 });
로그인 후 복사

연기

간단히 말하면 지연 객체는 jQuery의 콜백 함수 솔루션입니다. 영어로 defer는 "지연"을 의미하므로 deferred 객체의 의미는 미래의 특정 시점까지 실행을 "지연"하는 것입니다.

지연된 객체는 promise 객체와 동일한 작업을 수행할 수 있지만 done() 및 failure() 함수를 트리거하는 두 가지 함수가 있습니다.

연기된 객체에는 성공적인 결과를 처리하고 done()과 관련된 함수를 실행하는 해결() 함수가 있습니다. 거절() 함수는 실패한 결과를 처리하고 실패()와 관련된 함수를 실행하는 데 사용됩니다.

Resolve() 및 Reject() 함수 모두에 매개변수를 제공하면 둘 다 done() 및 실패()와 관련된 콜백 함수에 전달됩니다.

요약

jQuery의 ajax는 done()이 포함된 promise 객체를 반환하는 것이며, deferred는 이 promise 객체를 반환하는 프로세스입니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿