updateFunc的问题

来源:5-4 $.Deferred的设计

慕慕7300641

2018-07-31 10:37

updateFunc = function(i, contexts, values) {    
							return function(value) {    
								contexts[i] = this;    
								values[i] = arguments.length > 1 ? core_slice.call(arguments) : value;    
								// 处理中,派发正在处理事件    
								if (values === progressValues) {    
									deferred.notifyWith(contexts, values);    
									// 成功,并且最后剩余的异步任务为0了    
								} else if (!(--remaining)) {    
									// 说明所有任务都成功了,派发成功事件出去    
									// 事件包含的上下文是当前任务前边的所有任务的一个集合    
									deferred.resolveWith(contexts, values);    
								}    
							};    
						},

// deferred[resolveWith | rejectWith | notifyWith] 调用的是 Callbacks 里的 fireWith 方法    
						//    
						deferred[tuple[0] + "With"] = list.fireWith;


list.fireWith 的第一个参数contexts可以是个数组吗?这个到最后的实现apply,都没看到对contexts数组分解的处理,不理解

// list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) 是最终的执行回调的方法    
							if (list[firingIndex].apply(data[0], data[1]) === false && options.stopOnFalse) {    
								memory = false; // To prevent further calls using add    
								break;    
							}


写回答 关注

2回答

  • 慕慕7300641
    2018-07-31 11:20:44

    我知道了,contexts参数和values参数在list.fire里面根本就没有用到

  • 慕慕7300641
    2018-07-31 10:39:04

    list.fireWith 的第一个参数contexts可以是个数组吗?这个到最后的实现apply,都没看到对contexts数组分解的处理,不理解?

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题