是否可以解析 jquery 延迟对象,然后拒绝它,然后再次解析它,等等。 并在每次解析时触发 $.when ?
我正在尝试这个,但它不起作用:
var bindHide = $.Deferred();
var bindShow = $.Deferred();
if ($('#userdata').is(':hidden')) {
bindShow.resolve();
} else {
bindHide.resolve();
}
//SHOW USERDATA
$.when(bindShow).then(function() {
bindShow.reject();
$('#miniWeightLevel, #miniWeightLevelTextLayer').unbind('vclick').bind('vclick', function (e) {
showUserdata();
$('#miniWeightLevel, #miniWeightLevelTextLayer').unbind('vclick');
bindHide.resolve();
});
});
//HIDE USERDATA
$.when(bindHide).then(function() {
bindHide.reject();
$('#minifyCross').unbind('vclick').bind('vclick', function (e) {
hideUserdata();
bindShow.resolve();
});
});
最佳答案
给定的延期只能被拒绝或解决一次。而且,由于 $.when()
也返回一个 Promise,因此它也只会被拒绝或解决一次。所以,不,它不能像你要求的那样工作。
标准 deferreds 和 Promise 并非设计为通用通知系统,这就是您尝试使用它们的方式。 jQuery 的实现有一个通知功能,您可以使用它来实现此目的,但标准工作正在使该功能脱离 promise ,并且将以不同的方式完成。
对我来说,这更像是您只需要一个通知系统或自定义事件,而不是设计为单向的 promise 。它们被解决或拒绝一次,然后就不会再改变。
关于jquery - 如何选择性地解析和拒绝 jquery 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289897/