jQuery.post().done()和success:
jQuery.post().done()和success:,jquery,jqxhr,Jquery,Jqxhr,jQuery关于jQuery.post()的文档 success:参数和jqXHR.done()方法之间有什么区别;如果没有,那么jqXHR.done()方法的全部要点是什么?两个.done()和.success()都是回调函数,它们的功能基本相同 这是我的建议。不同之处在于,.success()在jQuery 1.8中被弃用。您应该改用.done() 如果您不想单击该链接: 弃用通知 jqXHR.success()、jqXHR.error()和jqXHR.complete()回调 从jQuer
jQuery
关于jQuery.post()的文档
success:
参数和jqXHR.done()
方法之间有什么区别;如果没有,那么jqXHR.done()
方法的全部要点是什么?两个.done()
和.success()
都是回调函数,它们的功能基本相同
这是我的建议。不同之处在于,.success()
在jQuery 1.8中被弃用。您应该改用.done()
如果您不想单击该链接:
弃用通知
jqXHR.success()
、jqXHR.error()
和jqXHR.complete()
回调
从jQuery1.8开始,jQuery1.5中引入的方法就不再推荐了。到
为最终删除代码做好准备,请使用jqXHR.done()
,
jqXHR.fail()
,改为jqXHR.always()
:
jqXHR.done(函数(数据、文本状态、jqXHR){})强>
成功回调选项的替代方法构造.done()
方法替换已弃用的jqXHR.success()方法。提到
deferred.done()获取实现详细信息
要点是它只是成功回调选项的一个替代选项,jqXHR.success()
已被弃用。jQuery过去只具有success
和error
和complete
的回调函数
然后,他们决定用jqXHR对象支持承诺,于是他们添加了.done()
,.fail()
,.always()
,等等。。。本着承诺API的精神。这些新方法的作用与回调几乎相同,但形式不同。您可以使用对您的编码风格更有效的API样式
随着人们越来越熟悉Promission,以及越来越多的异步操作使用该概念,我怀疑随着时间的推移,越来越多的人将转向promise API,但与此同时,jQuery同时支持这两种API
.success()
方法已被弃用,取而代之的是公共承诺对象方法名称
从中,您可以看到各种promise方法与回调类型的关系:
jqXHR.done(函数(数据、文本状态、jqXHR){})替代方案
构造成功回调选项,.done()方法替换
已弃用的jqXHR.success()方法。有关详细信息,请参阅deferred.done()
实施细节
jqXHR.fail(函数(jqXHR,textStatus,errorshown){})An
错误回调选项的替代构造.fail()方法
替换已弃用的.error()方法。有关详细信息,请参阅deferred.fail()
实施细节
jqXHR.always(函数(数据| jqXHR、文本状态、jqXHR |错误抛出){
});完整回调选项的替代构造
.always()方法替换不推荐使用的.complete()方法
为了响应成功的请求,函数的参数是
与.done()相同:data、textStatus和jqXHR对象。对于
失败的请求参数与.fail()的参数相同:
jqXHR对象、textStatus和error抛出。请参阅deferred.always()
有关实施细节
然后(函数(数据,文本状态,jqXHR){},函数(jqXHR,
textStatus,errorThrown){}集成了
.done()和.fail()方法,允许(从jQuery 1.8开始)
潜在的承诺被操纵。有关详细信息,请参阅deferred.then()
实施细节
如果您希望以更符合ES6 Promissions标准的方式编写代码,那么在这四个选项中,您将只使用.then()
首选Promissions而不是回调函数的原因是要有多个回调,并避免回调地狱之类的问题
回调地狱(有关更多详细信息,请参阅):
异步javascript,或使用回调的javascript,很难直观地得到正确的结果。很多代码最终都是这样的:
asyncCall(function(err, data1){
if(err) return callback(err);
anotherAsyncCall(function(err2, data2){
if(err2) return calllback(err2);
oneMoreAsyncCall(function(err3, data3){
if(err3) return callback(err3);
// are we done yet?
});
});
});
有了承诺,上述代码可以重写如下:
asyncCall()
.then(function(data1){
// do something...
return anotherAsyncCall();
})
.then(function(data2){
// do something...
return oneMoreAsyncCall();
})
.then(function(data3){
// the third and final async response
})
.fail(function(err) {
// handle any error resulting from any of the above calls
})
.done();
asyncCall()
.then(function(data1){
// do something...
return anotherAsyncCall();
})
.then(function(data2){
// do something...
return oneMoreAsyncCall();
})
.then(function(data3){
// the third and final async response
})
.fail(function(err) {
// handle any error resulting from any of the above calls
})
.done();