이번에는 done과 then의 차이점과 done과 then 사용 시 주의사항에 대해 알려드리겠습니다. 실제 사례를 살펴보겠습니다.
jquery의 deferred 객체의 done 메소드와 then 메소드는 모두 체인 호출을 구현할 수 있지만, then 메소드에 전달한 메소드에 반환 값이 있는 경우 해당 메소드가 전달됩니다. next 연쇄 호출 방법. done 메소드는 이와 반대입니다. 전달한 메소드에 반환 값이 있어도 done 메소드는 체인에서 호출된 다음 메소드에 반환 값을 전달하지 않습니다. 예:
var defer = jQuery.Deferred();
defer.done(function(a,b){
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
}).then(function( a, b ) {
console.log("a = " + a+"b = " + b);
return a * b;
}).done(function( result ) {
console.log("result = " + result);
});
defer.resolve( 2, 3 );
출력 결과는 다음과 같습니다.
결과 분석:
1. 첫 번째 완료와 두 번째 완료 모두 defer.resolve(2, 3)를 반환했습니다. ) 2. done의 콜백 반환 값은 전달되지 않습니다
3. 두 번째 done에는 매개변수가 하나만 있고 defer.resolve(2, 3)의 첫 번째 매개변수 2를 수신하므로 결과는 2
입니다.4. 첫 번째는 defer.resolve(2, 3)를 수신하고 두 개의 매개변수를 수신하며 결과는 6이고 새로운 지연된
object를 생성하여 결과를 지연된 객체
5에 전달합니다. 새로운 지연된 객체와 전달된 결과, 인쇄된 결과는 6이고 이 새로운 지연된 객체는 두 번째 then6에 전달됩니다. 그러면 두 번째 객체는 이제 새로운 지연된 객체를 받습니다. 이는 결과입니다. 따라서 매개변수 b에는 정의가 없으며 반환된 결과는 NaN이며 동시에 새로운 지연된 객체가 생성됩니다
7. 네 번째 done은 새로운 지연된 객체를 받고 전달된 매개변수는 NaN이며 인쇄된 결과는 다음과 같습니다. 당연히 NaN
이 기사의 사례를 읽었을 것입니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 자료:위 내용은 완료와 이후의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!