Функция успеха обещания AngularJS

Я сделал API-вызов HTTP-сообщения для URL-адреса.

Я получаю ответ, но я не понимаю, как написать функцию успеха, так как для этого есть много способов.

Вот мой вызов API. Пожалуйста, помогите мне, как будет выглядеть функция успеха?

var req = {
    method: 'POST',
    url: viewProfileurl,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Authorization': 'Bearer ' + $rootScope.token,
    },
    params: {
        'action':'view'
    }
}

$http(req);

person Ani    schedule 15.04.2016    source источник


Ответы (4)


Angular использует обещание внутри реализации $http, то есть $q:

Служба, помогающая запускать функции асинхронно и использовать их возвращаемые значения (или исключения) после завершения их обработки.

Итак, есть два варианта:

1-й вариант

Вы можете использовать обратные вызовы .success и .error:

var req = {
  method: 'POST',
  url: viewProfileurl,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer ' + $rootScope.token,
  },
  params: {
    'action': 'view'
  }

}

$http(req).success(function() {
    // do on response success
}).error(function() {
});

Но эти .success и .error устарели.

Так что берите 2-й вариант.

2-й вариант

Вместо этого используйте функцию .then

var req = {
  method: 'POST',
  url: viewProfileurl,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer ' + $rootScope.token,
  },
  params: {
    'action': 'view'
  }

}

$http(req).then(function() {
    // do on response success
}, function() {
   // do on response failure
});
person Shashank Agrawal    schedule 15.04.2016

Вам нужно написать успешный обратный вызов, чтобы получить данные, возвращаемые вашим API.

$http(req)
     .then(function (response) {
         var data = resposne.data;
         ...
      }, function (error) {
         var errorStatusCode = error.StatusCode;
         var errorStatus = error.Status;
         ...
      });

В основном $http возвращает обещание, и вам нужно написать функцию обратного вызова.

Или вы можете сделать что-то вроде этого:

$http(req).success(function(respData) { var data = respData; ... });
$http(req).error(function(err) { ... });
person Pratik Bhattacharya    schedule 15.04.2016

Это синтаксис успеха и ошибки

    $http.get("/api/my/name")
  .success(function(name) {
    console.log("Your name is: " + name);
  })
  .error(function(response, status) {
    console.log("The request failed with response " + response + " and status code " + status);
  };

Использование тогда

$http.get("/api/my/name")
  .then(function(response) {
    console.log("Your name is: " + response.data);
  }, function(result) {
    console.log("The request failed: " + result);
  };
person Taha Naqvi    schedule 15.04.2016

$http возвращает промис с функцией then, которую вы можете использовать.

$http(req).then(function (data) { ...; });

Определение then:

then(successCallback, failCallback)
person mrahhal    schedule 15.04.2016