以下回调方法之间有技术差异吗?
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
?
最佳答案
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>
关于javascript - jQuery Deferred 的完成回调与成功回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42850538/