我正在尝试从示例应用程序中找出主干(请参阅https://github.com/elfsternberg/The-Backbone-Store)。该代码使用 jQuery 的 Deferred 和 promise(),如下面的代码所示。我已经阅读了有关 jQuery 的文档,但是无法从下面的示例中弄清楚如何使用这些方法。您可能需要更多代码来回答这个问题,但也许不需要。这些是我对此的疑问
1) dfd.resolve 是在fadeOut 完成后调用的吗?如果是这样,dfd.resolve 会触发什么?
2) 通过返回 promise.promise() 会发生什么;它是在调用 Deferred 方法吗?什么时候?为什么这样做?这似乎是一种递归方法?
3) dfd.resolve 是否有可能触发此代码中未显示的其他方法?
hide: function() {
if ((":visible") === false) {
return null;
}
promise = $.Deferred(_.bind(function(dfd) {
this.el.fadeOut('fast', dfd.resolve)}, this));
return promise.promise();
},
show: function() {
if (this.el.is(':visible')) {
return;
}
promise = $.Deferred(_.bind(function(dfd) {
console.log("in promise section of show in base view");
this.el.fadeIn('fast', dfd.resolve) }, this))
return promise.promise();
}