繁体   English   中英

jQuery Deferred 的完成与成功回调

[英]jQuery Deferred's done vs success callback

以下回调方法之间是否存在技术差异?

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 ,我们无法跟踪其他数据,如jqXHRtextStatuserrorThrown等。我说得对吗?

done / fail方法是否有complete等价的方法?

根据您的经验,在某些情况下,一个比其他的更好/更受欢迎吗?

如果我同时使用successdone / then ,一个肯定会在另一个之前运行还是不能确定哪个肯定会在另一个之前运行? 或者使用successdone / then完全不推荐?

jQuery .done().then()区别之一是返回值可以在.then()处更改

请参阅jQuery 延迟和承诺 - .then() 与 .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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM