jQuery Deferred 콜백 최단 자습서

2871 단어 jquerydeferred
Deferrd는 jQuery에서 제공하는 리셋 방법의 포장 종류입니다.
다음은 jQuery Api 1.7에서 발췌한 내용입니다.
function asyncEvent() {
    var dfd = new jQuery.Deferred();

    // Resolve after a random interval
    setTimeout(function () {
        dfd.resolve("hurray"); //       |  done     
    }, Math.floor(400 + Math.random() * 2000));

    // Reject after a random interval
    setTimeout(function () {
        dfd.reject("sorry"); //       |  fail     
    }, Math.floor(400 + Math.random() * 2000));

    // Show a "working..." message every half-second
    setTimeout(function working() {
        if (dfd.state() === "pending") {
            dfd.notify("working... "); //  progress  
            setTimeout(working, 500);
        }
    }, 1);//     
    // Return the Promise so caller can't change the Deferred
    return dfd.promise(); //         :reject,resolve,notify
}

asyncEvent().done(function () {
    console.log('  ');
}).fail(function () {
    console.log('  ');
}).always(function () {
    console.log('    ,      ');
}).progress(function () {
    console.log('you got a message~');
});

사용하기 편리한 함수도 있습니다: $.when (dfd1, [dfd2, [dfd3]), 그가 되돌아온 것은 Deferrd 대상이다.전송된 모든 dfd가 성공한 후에도done 이벤트를 터치할 수 있습니다.임의의 dfd가 실패하면fail을 즉시 터치합니다

var a=$.Deferred();
var b=$.Deferred();

$.when(a,b)
.fail(function(){console.log('  ');})
.done(function(){console.log('  ');});

b.resolve()
a.resolve()
//  :  

var a=$.Deferred();
var b=$.Deferred();

$.when(a,b)
.fail(function(){console.log('  ');})
.done(function(){console.log('  ');});

b.reject()
//  :  

then은 빠른 방법: dfd.then(doneCallback,failCallback,[progressCallback]);
그리고: 모든 트리거 방법에서 하나의 매개 변수를 전달할 수 있다

// Attach a done, fail, and progress handler for the asyncEvent
$.when(asyncEvent()).then(function (status) { //      ,done
    console.log(status + ', things are going well');
}, function (status) { //      ,fail
    console.log(status + ', you fail this time');
}, function (status) { //  progress  。1.7  
    $("body").append(status);
});

마지막으로 하이라이트 코드:
http://p2world.iteye.com/blog/1405227
http://p2world.iteye.com/blog/1405238

좋은 웹페이지 즐겨찾기