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; }
我知道了,contexts参数和values参数在list.fire里面根本就没有用到
list.fireWith 的第一个参数contexts可以是个数组吗?这个到最后的实现apply,都没看到对contexts数组分解的处理,不理解?