Skip to content

Commit 22e48d4

Browse files
committed
deferred then
1 parent ff6517c commit 22e48d4

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

jQuery架构设计与实现/jquery-2.1.4.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3248,9 +3248,11 @@ jQuery.extend({
32483248
then: function( /* fnDone, fnFail, fnProgress */ ) {
32493249
var fns = arguments;
32503250
return jQuery.Deferred(function( newDefer ) {
3251+
//then最多接受3个参数,对应着tuples里面的3个数组
32513252
jQuery.each( tuples, function( i, tuple ) {
32523253
var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
32533254
// deferred[ done | fail | progress ] for forwarding actions to newDefer
3255+
// deferred.done = list.add() //增加新的监控函数
32543256
deferred[ tuple[1] ](function() {
32553257
var returned = fn && fn.apply( this, arguments );
32563258
if ( returned && jQuery.isFunction( returned.promise ) ) {
@@ -3279,19 +3281,24 @@ jQuery.extend({
32793281

32803282
// Add list-specific methods
32813283
jQuery.each( tuples, function( i, tuple ) {
3282-
var list = tuple[ 2 ],
3284+
var list = tuple[ 2 ], //
32833285
stateString = tuple[ 3 ];
32843286

32853287
// promise[ done | fail | progress ] = list.add
3288+
// 注册三个回调方法
32863289
promise[ tuple[1] ] = list.add;
32873290

32883291
// Handle state
3292+
// 如果有状态控制
32893293
if ( stateString ) {
3294+
//增加三个预处理函数
32903295
list.add(function() {
32913296
// state = [ resolved | rejected ]
3297+
// 执行操作时候,修改对应的状态
32923298
state = stateString;
32933299

32943300
// [ reject_list | resolve_list ].disable; progress_list.lock
3301+
// 增加对应的方法,让操作不可逆
32953302
}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
32963303
}
32973304

jQuery架构设计与实现/第四章:异步编程/jQuery.Deferred/Deferred管道设计.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
console.log("Value is ( 2*5 = ) 10: " + value);
1919
});
2020

21-
defer.resolve(5);
21+
defer.resolve(5);
2222

2323
// var dfd = jQuery.Deferred();
2424

0 commit comments

Comments
 (0)