gpt4 book ai didi

javascript - jQuery 中 deferred.resolveWith() 在哪里定义?

转载 作者:行者123 更新时间:2023-11-30 12:04:21 24 4
gpt4 key购买 nike

所以,我正在研究 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 ] );
}

最佳答案

它在 line 87 of deferred.js 中定义:

deferred[ tuple[ 0 ] + "With" ] = list.fireWith;

连同rejectWithnotifyWithfireWith 函数是 Callbacks 实例的特权方法(参见 its docs here )。

通用性很好,但您可以过度使用 :-)

关于javascript - jQuery 中 deferred.resolveWith() 在哪里定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35640921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com