jQuery 中的 deferred.resolveWith() 在哪里定义?
Where is deferred.resolveWith() defined in jQuery?
所以,我正在查看 jQuery 源代码,因为我试图理解 jQuery ajax 成功回调中 "this" 的含义(由于 deferred.resolveWith() 方法,我发现它有效。
我现在感到困惑的是,在查看代码时,我没有看到调用的 resolveWith() 方法的实际 定义。
源代码在这里,但我做了一个简单的文本搜索来找到单词 "resolveWith"(在下面列出)的所有实例,它们似乎都是对一个根本不存在的方法的调用不存在:https://code.jquery.com/jquery-2.2.1.js
这是如何工作的,换句话说,"resolveWith"方法在哪里定义的?
"resolveWith"
的实例
function resolveFunc( i ) {
return function( value ) {
args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
if ( !( --count )) {
deferred.resolveWith( deferred, args );
}
};
if ( !count ) {
deferred.resolveWith( deferred, args );
}
} else if ( deferred !== firstParam ) {
deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
}
function resolve() {
if ( !( --count ) ) {
defer.resolveWith( elements, [ elements ] );
}
}
// The ajax method's usage
if ( isSuccess ) {
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
连同 rejectWith
和 notifyWith
。 fireWith
函数是 Callbacks
实例的特权方法(参见 its docs here)。
通用性很好,但您可以过度使用 :-)
所以,我正在查看 jQuery 源代码,因为我试图理解 jQuery ajax 成功回调中 "this" 的含义(由于 deferred.resolveWith() 方法,我发现它有效。
我现在感到困惑的是,在查看代码时,我没有看到调用的 resolveWith() 方法的实际 定义。
源代码在这里,但我做了一个简单的文本搜索来找到单词 "resolveWith"(在下面列出)的所有实例,它们似乎都是对一个根本不存在的方法的调用不存在:https://code.jquery.com/jquery-2.2.1.js
这是如何工作的,换句话说,"resolveWith"方法在哪里定义的?
"resolveWith"
的实例function resolveFunc( i ) {
return function( value ) {
args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
if ( !( --count )) {
deferred.resolveWith( deferred, args );
}
};
if ( !count ) {
deferred.resolveWith( deferred, args );
}
} else if ( deferred !== firstParam ) {
deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
}
function resolve() {
if ( !( --count ) ) {
defer.resolveWith( elements, [ elements ] );
}
}
// The ajax method's usage
if ( isSuccess ) {
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
连同 rejectWith
和 notifyWith
。 fireWith
函数是 Callbacks
实例的特权方法(参见 its docs here)。
通用性很好,但您可以过度使用 :-)