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;
}