據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