jQuery Deferred完成vs成功回调
问题描述:
以下回调方法之间是否存在技术差异?jQuery Deferred完成vs成功回调
$.ajax({
...
success: function(data, textStatus, jqXHR) {
foo(data);
},
error: function (jqXHR, textStatus, errorThrown) {
bar();
}
});
$.ajax(...)
.done(function(data) {
foo(data);
})
.fail(function() {
bar();
});
$.ajax(...)
.then(function(data) {
foo(data);
}, function() {
bar();
});
经验少,我不知道他们是通过data
到foo()
正确的例子。 (如果我错了,请大家指正。)
随着done
/fail
,我们无法跟踪像jqXHR
,textStatus
,errorThrown
,等我说的对其他数据?
done
/fail
方法是否有complete
等效?
从你的经验来看,在某些情况下比其他人更好/更优于其他人吗?
如果我同时使用success
和done
/then
,将之前对方肯定一分也不能将先于另一个绝对运行某些?或者正在使用success
和done
/then
完全不推荐?
谢谢大家提前。
答
一个jQuery的.done()
和.then()
之间差的返回值可以在.then()
改变参见jQuery deferreds and promises - .then() vs .done()
$.Deferred(function(dfd) {
dfd.resolve(1)
})
.done(function(n) {
return n + 1
})
.then(function(res) {
console.log(res) // 1
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
$.Deferred(function(dfd) {
dfd.resolve(1)
})
.then(function(n) {
return n + 1
})
.then(function(res) {
console.log(res) // 2
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
[jQuery.ajax处理继续响应:“success:”vs“.done”?]可能重复(http://*.com/questions/8840257/jquery-ajax-handling-continue-responses-success- vs-done) – gyre
'.then()'为链接返回一个新的承诺。 '.done()'不。 '.then()'更接近承诺标准(在JQ 3.0中它实际上是标准的,在以前的版本中并不完全)。 '.done()'完全是一个jQuery特定的设计,不受任何承诺标准的约束。 – jfriend00