角度相当于jQuery deferred.always()回调

时间:2016-02-12 15:40:49

标签: javascript angularjs ajax angular-promise

我们可以在jQuery中使用.always()回调函数处理响应,无论响应是否成功。

AngularJS中是否存在这种类型的用法?

//jQuery
$.get( "test.php" ).always(function() {
  alert( "$.get completed with success or error callback arguments" );
});

//AngularJS
$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
    //success
  }, function errorCallback(response) {
    //error
  });

//how can i handle always?

2 个答案:

答案 0 :(得分:2)

您可以使用Angular承诺的finally method

答案 1 :(得分:1)

用于此的finally()服务的$q方法:

$http({
  method: 'GET',
  url: '/someUrl'
}).then(function successCallback(response) {
    //success
}).catch(function errorCallback(response) {
    //error
}).finally(function() {
    //Callback method
    //Executed always, no matter of success or fail
});

finally()回调中返回承诺时的重要通知:

  

finally会返回一个承诺,该承诺将以相同方式解析   履行价值或拒绝理由作为承诺。但是,如果callback   返回一个承诺,返回的承诺的解决方案将是   延迟,直到回调结束的承诺结束。