据jQuery的文档为deferred.promise([target])
:我可以使用jQuery的Deferred.promise()来替换对象的现有承诺吗?
如果提供的目标,deferred.promise()将方法附加到 ,然后返回这个对象,而不是创建一个新的。这可以 将Promise行为附加到已存在 的对象。
据我了解,在目标上调用promise()
应该替换目标的现有承诺的接口,在这种情况下,我希望下面的登录"new done"
:
var defer = $.Deferred();
defer.done(function() {
console.log('new done')
});
defer.promise(
$.getJSON('/foo').done(function() {
console.log('old done')
})
);
但我仍然得到目标的原始done
回调。 (使用jQuery 1.8.3)
我的理解完全不正确,或者有什么方法可以以某种方式替换对象的整个承诺接口吗?
谢谢,这绝对有助于澄清事情。我有一个[后续问题](http://stackoverflow.com/questions/15096350/can-i-manually-resolve-a-deferred-object-if-a-callback-might-need-to-reject-it)带着额外的扭曲... – 2013-02-26 18:19:21