Jam*_*all 33
这似乎是deferred.then()可以让你通过对成功和失败两个单独的回调,而deferred.always()需要n回调将全部不管初始事件的结果叫号.
我会说deferred.always()在初始事件的成功/失败并不重要的情况下使用
随着.then()您可以提供当为单个回调$.Deferred解决了(done),和另一个当为$.Deferred被拒绝(fail).
.always()另一方面,允许您提供始终执行的回调,无论是$.Deferred已解决还是拒绝.换句话说,在此回调中,AJAX调用失败或已成功执行无关紧要.
.always()当我希望每次运行代码时,我倾向于放入代码,而不管是否$.Deferred成功解析.例如,清除AJAX加载指示符或隐藏进度条.使用.then()你有这样的东西:
$.get("/some/url").then(function () { // done callback
$(".progress-bar").hide();
}, function () { // fail callback
$(".progress-bar").hide();
});
Run Code Online (Sandbox Code Playgroud)
虽然如果你使用过.always(),你只需要一个回调,因为你总是想要隐藏进度条,无论是否$.Deferred已经解决或拒绝:
$.get("/some/url").always(function () {
$(".progress-bar").hide();
});
Run Code Online (Sandbox Code Playgroud)
在jQuery 1.8之前:.always(fn)相当于.then(fn, fn)
从jQuery 1.8开始:.always(fn)类似于.then(fn, fn)但它返回的内容不同(详见http://api.jquery.com/deferred.then/)
| 归档时间: |
|
| 查看次数: |
10225 次 |
| 最近记录: |