gpt4 book ai didi

javascript - 我可以解析函数范围的延迟对象还是必须传递延迟对象?

转载 作者:行者123 更新时间:2023-11-30 15:27:59 28 4
gpt4 key购买 nike

是否可以有一个创建自己的 Deferred 对象的函数,并且当该函数具有 Deferred.resolved 时继续使用 Deferred.then 方法?或者我是否必须在函数外部创建 Deferred 对象,将其传入然后返回已解析的对象?

JS

function hide() {
$.when(fadeElementOut(this.$el)).then(() => this.dispose());
}

function fadeElementOut($el) {
if($el) {
let $deferred = $.Deferred();
$el.addClass(config.stateClasses.hidden);

$el.on('transitionend', (event) => {
if(event.originalEvent.propertyName === 'opacity') {
return $deferred.resolve();
}
});
}
}

最佳答案

是的,不仅可能而且还建议在函数内部创建延迟对象,最终导致它解析。然而,$.when 不会神奇地检测到 deferred 的存在,相反你必须 return deferred 的 promise :

function hide() {
fadeElementOut(this.$el).then(() => this.dispose());
}

function fadeElementOut($el) {
const deferred = $.Deferred();
if ($el) {
$el.addClass(config.stateClasses.hidden);
$el.on('transitionend', event => {
if (event.originalEvent.propertyName === 'opacity') {
deferred.resolve();
// a `return` here is pointless
}
});
} else {
deferred.resolve(); // when there is no element, fulfill the promise immeidately
}
return deferred.promise();
// ^^^^^^
}

关于javascript - 我可以解析函数范围的延迟对象还是必须传递延迟对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680291/

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