jquery Deferred 객체 적용 인스턴스

2820 단어 deferred
jquery deferred 대상을 모르면 먼저 구글에서'javascriptpromise 모드'와'jquery deferred 대상'을 확인하세요.찾아낸 몇 편은 모두 비교적 상세하게 말했다.한 번에 흔히 볼 수 있는 용도만 열거해 보세요.
1. 저는 두 개의 비동기 조작 f1과 f2가 있습니다. f2는 f1의 비동기 반환 결과에 의존해야 합니다. 리셋으로 쓰지 않으면 어떻게 합니까?
내가 원하는 모습을 먼저 생각해 보자.
//f3    f2     
f1().pipe(f2).then(f3);

f1과 f2의 실현을 보면 간단하다.
var f1 = function(){
        var _i = $.Deferred();
        setTimeout(function(){
            _i.resolve("f1     ");
        },1000);
        
        return _i;    
}

var f2 = function(data){
    var _i = $.Deferred();
    console.log( data);
    setTimeout(function(){
            _i.resolve("f2     ");
    },1000);
    return _i;
}

var f3 = function( data ){
    console.log( data );
}

 
2. 저는 f1과 f2 두 가지 조작을 하고 서로 의존하지 않지만 둘 다 완성한 후에 f3를 실행하기를 원합니다. 어떻게 합니까?
다음은 jquery 매뉴얼에서 직접 베끼기
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
    //a1 a2     ajax     
   var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
   if ( /Whip It/.test(jqXHR.responseText) ) {
      alert("First page has 'Whip It' somewhere.");
   }
});

3. deferred 대상은 재미있는 notify 대상도 있다.이 방법은 Resolve와reject에 이전에progress callback을 통지해서 해당하는 조작을 할 수 있습니다.

좋은 웹페이지 즐겨찾기