jquery Deferredの例

1107 ワード

様々なコールバックはプログラムを同期させるために、1つをやり終えてもう1つをやるので、jQueryにはDeferredがあり、中国語翻訳は遅延ですが、個人的には非同期対列だと思いますので、例を見てみましょう
例1:
function A() {
        var deferred = $.Deferred();
        setTimeout(function() {
            deferred.resolve("A return!");        
        }, 1000);
        return deferred.promise();
    }

    function B(value) {
        var deferred = $.Deferred();
        setTimeout(function() {
            deferred.resolve(value + "B return!");        
        }, 1000);
        return deferred.promise();
    }

    function C(value) {
        alert(value)
    }


    A().then(B).then(C);

例2
$.when(function(){
        return "aaaaa";
    }).then(function(bb){
        alert(bb());
    }).done(function(aa) {
        console.log("    ");        
    });

例3
var wait = function (dfd) {
    var task = function () {
        alert('completed!!');
        dfd.resolve("        ");
    }
    setTimeout(task, 5000);
}
$.Deferred(wait).done(function (str) {
    alert(str)
});