JQuery와 이연 응용 프로그램

우리는 예를 살펴, 다음, 결국 연기 지연된와 함께 사용 jquery1.5 후 무엇을 말하고
var에 대기 = 함수 () {
  var에 작업 = 함수 () { 
    을 console.log ( '执行完成' ); 
  } 
  에서는 setTimeout (작업, 2000 ); 
} 
) (기다려;

작업 실행이 완료되면 이제 일부 특히 복잡한 작업은 코드 내부의 많은 수 있습니다. 어떻게 그렇게 할 수 있습니다. 다음에 계속해서 쓸 경우 문제가되지 않지만 오픈 폐쇄 원칙에 맞지 않습니다. 이 여러 번 다음 코드를 많이 변경 될 수 있습니다 뒤에. 개방 수정은 떨어져 확장합니다. 우리는 팽창, 수정에 대한 폐쇄 개방 실현해야합니다.

 

이 문제를 해결하기 위해, 우리는 지연된 jQuery를 소개합니다
기능 WaitHandle이 () {
  var에 DTD .Deferred = $ (); // 지연된 객체가 생성 

  VAR 대기 = 기능 (DTD는) { //이 지나가는 객체가 지연됩니다 필요 
    VAR의 작업 = 함수 () { 
      을 console.log ( '실행 완료 ' ); 
      dtd.resolve (); // 비동기 작업이 완료되었습니다 
      // dtd.reject을 (); // 나타내는 비동기 작업이 실패하거나 오류 
    } 
    에서는 setTimeout (작업, 2000 );
    반환 DTD를; // 연기 된 자리로 돌아 요청 그게 
  } 

  // 이 값이 반환해야합니다 
  반환 , 대기 (DTD)를 
}

그리고 세 가지 기능이 있으며, 첫 번째 함수는 WaitHandle이 층이고, 제 2 층은 대기 기능, 제 3 층의 기능은 작업이된다. 두 반환, 첫 번째 한에 전달할 수 있습니다. 그런 다음 처리의 시리즈와 DTD를 반환합니다. 그리고 마지막으로 사용하는 방법

 

VAR = w WaitHandle이 (); 
w.then ( 함수 () { 
  CONSOLE.LOG ( 'success1' ); 
} 함수 () { 
  CONSOLE.LOG ( '오류' ); 
}) 
그 때는 ( 함수 () { 
  CONSOLE.LOG ( 'success2' ) 
} , 함수 () { 
  CONSOLE.LOG ( '있고 Error2' ) 
}); 
// 还有w.done和w.fail

 

개요, API가 두 가지 범주로 나눌 수 있습니다 DTD, 다른 의도

첫 번째 범주 : dtd.resolve dtd.reject
두번째 카테고리 : dtd.then dtd.done dtd.fail
이 두 종류로 구분한다, 그렇지 않으면 그 결과는 심각 할 것이다!
상기 예에서, 코드는 최종 성능 dtd.reject (). 결과를보십시오. .
기능 WaitHandle이 () {
  var에 DTD .Deferred = $ (); // 지연된 객체가 생성 

  VAR 대기 = 기능 (DTD는) { //이 지나가는 객체가 지연됩니다 필요 
  VAR의 작업 = 함수 () { 
    을 console.log ( '실행 완료 ' ); 
    dtd.resolve (); // 비동기 작업이 완료되었습니다 
    // dtd.reject을 (); // 나타내는 비동기 작업이 실패하거나 오류 
  } 
  에서는 setTimeout (작업, 2000 );
    반환 DTD를; // 연기 된 자리로 돌아 요청 그게 
  } 

  // 이 값이 반환해야합니다 
  반환 , 대기 (DTD)를 
} 

var에 = W를WaitHandle이 (); 
w.reject () // 非常不老实的做法 
w.then ( 함수 () { 
  CONSOLE.LOG ( 'success1' ); 
} 함수 () { 
  CONSOLE.LOG ( '오류' ); 
}). 다음 ( 함수 () { 
  CONSOLE.LOG ( 'success2' ) 
} 함수 () { 
  CONSOLE.LOG ( '있고 Error2' ) 
});

 

그래서이 문제를 해결하는 방법, 그것은 가장 중요한 역할은 매우 유사 약속에 리드;
기능 WaitHandle이 () {
  var에 DTD .Deferred = $ (); // 지연된 객체가 생성 

  VAR 대기 = 기능 (DTD는) { //이 지나가는 객체가 지연됩니다 필요 
    VAR의 작업 = 함수 () { 
      을 console.log ( '실행 완료 ' ); 
      dtd.resolve (); // 비동기 작업이 완료되었습니다 
      // dtd.reject (); // 비동기 작업이 실패 표시 또는 오류 
    } 
    에서는 setTimeout (작업, 2000 );
    반환 dtd.promise (); // 돌아 가기 약속, 오히려 deferreds로 돌아보다는 
  } 

  // 이 값이 반환해야합니다 
  반환 대기 (DTD를); 
}


VAR = w WaitHandle이 (); 
w.then ( 함수 () { 
  CONSOLE.LOG ( 'success1' ); 
} 함수 () { 
  CONSOLE.LOG ( '오류' ); 
}). 다음 ( 함수 () { 
  CONSOLE.LOG ( 'success2' ) 
} , 함수 () { 
  CONSOLE.LOG ( '있고 Error2' ) 
});
이 약속 () 메서드를 호출하지만, 이미 약속을 초기 개념을 제안하고 있지만,이 jquery1.5 시간입니다. 약속을 반환 한 후, 학생들이 시간이 나 w.reject () 오류를 변경합니다. 약속을 반환 한 후, 다음 메소드는 거부 결의를 변경하지 않는, 실패, 수행,들을 수 있습니다. 모니터 할 권리는 단지 다른 학생들입니다.

추천

출처www.cnblogs.com/wzndkj/p/10987549.html