首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery延迟vs jqXHR

jQuery延迟vs jqXHR
EN

Stack Overflow用户
提问于 2011-06-09 05:17:38
回答 2查看 5.9K关注 0票数 17

我使用:

代码语言:javascript
复制
var jqXHR = $.ajax(settings);
jqXHR.success(function(result){});
jqXHR.error(function(result){});
jqXHR.complete(function(result){});

但是1.5版已经添加了延迟对象。

问:通常情况下,你什么时候使用成功、错误和完成方法,而不是延迟、完成和失败的新热点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-09 05:22:10

对于$.ajax()及其家族来说,.success仅仅是延迟的.done的同义词,同样,.error也是.fail的同义词。

因此,实际上您展示的示例已经是延迟方法,但名称不同。

.complete在很大程度上是新的AJAX 1.6 .always的同义词,您可以使用$.then(cb, cb)获得相同的效果,无论AJAX调用成功与否,cb都会被调用。我相信在.complete.always$.then的变种中,传递给“失败”回调的参数会有一些细微的差别。

我个人更喜欢使用这些命名函数的延迟版本,因为这样您就不必担心延迟对象是否是jqXHR。只有jqXHRs.success.error.complete,但每个延迟(包括jqXHR)都有.done.fail.always

EDIT似乎jQuery开发人员同意我的观点-他们已经announced.success.error.complete将在jQuery 1.8中被弃用

票数 17
EN

Stack Overflow用户

发布于 2011-06-23 05:13:21

Deferred旨在取代jqXHR,并将成功和错误的概念抽象到ajax之外。

快速浏览源代码: jQuery 1.6.1

代码语言:javascript
复制
// completeDeferred is resolved in only one place.
completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );

deferred.promise( jqXHR ); // this attaches the promise methods to jqXHR
jqXHR.success = jqXHR.done;
jqXHR.error = jqXHR.fail;
jqXHR.complete = completeDeferred.done;

我制作了一个奶酪slide show,用于说明延迟是如何有用的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6285407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档