【发布时间】:2017-08-08 14:22:32
【问题描述】:
以下回调方法有技术上的区别吗?
1
$.ajax({
...
success: function(data, textStatus, jqXHR) {
foo(data);
},
error: function (jqXHR, textStatus, errorThrown ) {
bar();
}
});
2
$.ajax(...)
.done(function(data) {
foo(data);
})
.fail(function() {
bar();
});
3
$.ajax(...)
.then(function(data) {
foo(data);
}, function() {
bar();
});
经验不足,我不确定它们是否是将data 传递给foo() 的正确示例。 (如果我错了,请纠正我。)
使用done/fail,我们无法跟踪jqXHR、textStatus、errorThrown 等其他数据。对吗?
done/fail 方法是否存在 complete 等效项?
根据您的经验,在某些情况下,一个人是否比其他人更好/更受欢迎?
如果我同时使用success 和done/then,一个肯定会在另一个之前运行,或者不能确定哪个肯定会在另一个之前运行?还是完全不推荐使用success 和done/then?
【问题讨论】:
-
.then()返回一个新的链式承诺。.done()没有。.then()更接近于承诺标准(在 JQ 3.0 中它实际上是标准的,在以前的版本中并不完全)。.done()完全是 jQuery 特定的设计,不受任何 Promise 标准的约束。
标签: javascript jquery jquery-deferred