【发布时间】:2012-12-24 21:59:03
【问题描述】:
我试图了解两者之间的区别
$.when(...).then(...)
$.when(...).done(...)
在 jQuery 中。据我了解,它们都是在内部对象完成加载时执行的。但是有什么区别。示例将不胜感激。
【问题讨论】:
标签: jquery
我试图了解两者之间的区别
$.when(...).then(...)
$.when(...).done(...)
在 jQuery 中。据我了解,它们都是在内部对象完成加载时执行的。但是有什么区别。示例将不胜感激。
【问题讨论】:
标签: jquery
.done() 只有成功回调。
.then() 有成功和失败回调。
从 jQuery 1.8 开始,
deferred.then()方法返回一个新的承诺 可以过滤延迟通过的状态和值 函数,替换现在已弃用的deferred.pipe()方法。
deferred.done()方法接受一个或多个参数,所有参数 可以是单个函数,也可以是函数数组。由于
deferred.done()返回延迟对象,其他方法 延迟对象可以链接到这个对象,包括附加的.done()方法。当 Deferred 被解决时, doneCallbacks 是 使用提供给 resolve 或 resolveWith 的参数执行 按添加顺序调用方法。
【讨论】:
.then() 有一个方法签名,允许传递失败回调和成功回调。更重要的一点是.then()返回一个new的promise对象,.done()返回的是同一个promise对象。至少这是基本答案。有关更完整的答案,请参阅由 Raphael 链接到原始问题的this question 上的答案
then(),您将获得一个新的承诺,因此您可以链接不同的操作。使用这个你的代码可以简化很多。