我如何从$ resource POST请求中获取响应

问题描述:

看起来我的要求是

angular.module('todoApp').factory('UsersService', ['$resource', 'paramsService', '$q', function($resource, paramsService, $q){
var server = paramsService.serverUrl;
return {
    'auth': function(username, password){
        var $response = {};
        $resource(server + '/api/account/auth', {}, {call: {method: 'POST', headers: {'Content-Type': 'application/json'}}}).call(
            {'username': username, 'password': password},
            function(data){
                console.log(data);
                $response = data;
            }
        );
        console.log($response);
        return $response;
     },
  }
}]);

在成功函数中,我有数据响应,但变量$ response为空.我知道,但是为什么会发生,但是找不到等待响应返回的方法.我如何从$ resource获得响应?

At success function i hava response in data, but variable $response is empty. I know but why it happens, but can't find way to wait response to return it. How can i get response from $resource?

您好@falloff,请尝试使用以下代码段,我认为这对您有用.另外,让我知道它是否有效.

Hello @falloff please try with below code snippet, I think this will work for you. Also, let me know whether It works or not.

angular.module('todoApp').factory('UsersService', ['$resource', 'paramsService', '$q', function($resource, paramsService, $q){
  var server = paramsService.serverUrl;
  return {
    'auth': function(username, password){
      let resource = $resource(server + '/api/account/auth', {}, {
        save: {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
        },
      });
      resource.save(
        {'username': username, 'password': password}, (response) => {

          if (response.length !== 0 && response.length === 0) {
            // You will get respose here in 'response'
          }
          else {
            // If response is null
          }
          deferred.resolve('request successful');
        },
        (err) => {
          // Error
          deferred.reject(err);
        });
    },
  }
}]);