根据 jQuery 文档deferred.promise([target])
:
如果提供了 target, 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。)
我的理解完全不正确,还是有某种方法可以以某种方式替换对象的整个承诺接口?