<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ϞҪ͢τյ</title>
<script src="jquery-2.0.3.js"></script>
<script>

jQuery.extend({
    
    Deferred : function(){},
    when : function(){}
    
});

$.Deferred();   ->   $.Callbacks();
$.when();
ғԙהгˇܹԚܘַߪעքì(3043 , 3183) Deferred : ғԙהг : הӬҽքͳһڜm
-------------------------------------------------------------------------
var cb = $.Callbacks();

setTimeout(function(){
    
    alert(111);
    cb.fire();
    
},1000);

cb.add(function(){
    alert(222);
});   //Јկ111    ՙկ222  Ӭҽ
------------------------------------------------------------------------

var dfd = $.Deferred();

setTimeout(function(){
    
    alert(111);
    dfd.resolve();//`̆Ԛfire
    
},1000);

dfd.done(function(){//`̆Ԛadd
    alert(222);
});    //Јկ111    ՙկ222   Ӭҽ

-------------------------------------------------------


setTimeout(function(){
    
    alert(111);
    
},1000);

alert(222);//Јկ111    ՙկ222   Ӭҽ

-------------------------------------------------------


var dfd = $.Deferred();

setTimeout(function(){
    
    alert(111);
    dfd.notify();//`̆Ԛfire
    
},1000);

dfd.progress(function(){//`̆Ԛadd
    alert(222);
});        //Јկ111    ՙկ222   Ӭҽ


$.ajax({
    url : \'xxx.php\',
    success : function(){
        alert(\'ԉ٦\');
    },
    error : function(){
        alert(\'ʧќ\');
    }
});

//$.ajaxŚ׃‹ғԙ٦Ŝ
$.ajax(\'xxx.php\').done(function(){ alert(\'ԉ٦\'); }).fail(function(){ alert(\'ʧќ\'); });


-------------------------------------------------------------

var dfd = $.Deferred();

setTimeout(function(){
    
    //alert(111);
    //dfd.resolve();
    dfd.reject();//`̆Ԛfire
    
},1000);

dfd.done(function(){//`̆Ԛadd
    alert(\'ԉ٦\');
}).fail(function(){//`̆Ԛadd
    alert(\'ʧќ\');
});    //Јկ111    ՙկ222   Ӭҽ

----------------------------------------------------------

var dfd = $.Deferred();

setInterval(function(){
    
    alert(111);
    dfd.resolve();//ԉ٦הӦdone
    dfd.reject();//ʧќהӦfail
    dfd.notify()//޸׈אהӦprogressì޸ѐאܡԐ޸׈͵ì̹ӔҪlѸԥע
    
},1000);

dfd.done(function(){
    alert(\'ԉ٦\');
}).fail(function(){
    alert(\'ʧќ\');
}).progress(function(){
    alert(\'޸׈א\');
});

-----------------------------------------------------------------------


$(function(){
    var cb = $.Callbacks(\'memory\');
    cb.add(function(){
        alert(1);
    });
    cb.fire();
    $(\'input\').click(function(){
        cb.add(function(){//ԐmemoryҢȒfireӑޭִѐڽһՎ,bִܴѐfire(),
            alert(2);
        });
    });
----------------------------------------------------    
    var dfd = $.Deferred();
    setTimeout(function(){
        alert(111);
        dfd.resolve();
    },1000);
    dfd.done(function(){//ֈ؅resolve()ִѐ‹կԶaaa,
        alert(\'aaa\');
    });
    $(\'input\').click(function(){//֣ܷдťկԶbbb,{ԃքߍˇcallbackքmemory
        dfd.done(function(){
            alert(\'bbb\');
        });
    });
});

---------------------------------------------------------------
done
fail
progress

resolve
reject
notify


------------------------------------------------------------------------

function aaa(){
    var dfd = $.Deferred();
    alert( dfd.state() );
    setTimeout(function(){
        dfd.resolve();
        alert( dfd.state() );
    },1000);
    return dfd.promise();
}
var newDfd = aaa();
newDfd.done(function(){
    alert(\'ԉ٦\');
}).fail(function(){
    alert(\'ʧќ\');
});
newDfd.reject();
-----------------------------------------------------------------------

alert(i^1);//0^1=1  1^1=0



var dfd = $.Deferred();

setTimeout(function(){
    
    //dfd.resolve();
    dfd.reject(\'hi\');
    
},1000);

dfd.always(function(){
    
    
    alert(\'hello\');
    
    
});

dfd.then(function(){//ԉ٦ܘַ
    alert(1);
},function(){//ʧќܘַ
    alert(arguments[0]);
},function(){//޸ѐאܘַ
    alert(3);
});

----------------------------------------------------------------------
var dfd = $.Deferred();

setTimeout(function(){
    
    dfd.resolve(\'hi\');
    
},1000);

var newDfd = dfd.pipe(function(){
    
    return arguments[0] + \'Įζ\';
    
});

newDfd.done(function(){
    alert( arguments[0] );
});
</script>
</head>

<body>
<input type="button" value="֣ܷ">
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script src="jquery-2.0.3.js"></script>
<script>

var dfd = $.Deferred();
dfd.done();//完成触发成功的方法     未完成触发fail方法。
$.when().done();//when返回延迟对象,when可以对多个延迟对象做操作。

--------------------------------------------------------------------
function aaa(){
    var dfd = $.Deferred();
    
    dfd.resolve();//完成
    dfd.reject();
    
    return dfd;
}

function bbb(){
    var dfd = $.Deferred();
    
    //dfd.resolve();
    dfd.reject();//
    
    return dfd;
}

aaa().done(function(){
    alert(\'成功\');
});

$.when( aaa() , bbb() ).done(function(){//aaa,bbb延迟对象都完成执行done,都失败走fail
//aaa,bbb要返回~延迟对象
    alert(\'成功\');
}).fail(function(){
    alert(\'失败\');
});



$.when( ).done(function(){
    alert(\'成功\');
});


/*when的源码


return $.Deferred();
 
 arguments[0]
 arguments[1]
 arguments[2]
 arguments[3]


done()

计数器 :4*/


function aaa(){
    var dfd = $.Deferred();
    dfd.resolve();
    return dfd;
}

function bbb(){
    var dfd = $.Deferred();
    dfd.reject();
    //return dfd;
}

$.when( 123 , 456 ).done(function(){
    alert(arguments[0]);
    alert(arguments[1]);
    alert(\'成功\');
}).fail(function(){
    alert(\'失败\');
});


$.when( aaa() , 111 , bbb() , 222 ).done(function(){
    alert(\'成功\');
}).fail(function(){
    alert(\'失败\');
});
</script>
</head>

<body>
</body>
</html>

 

版权声明:本文为yaowen原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yaowen/p/6923542.html