如何在服务中从后端响应中附加状态代码和数据

时间:2019-03-05 10:19:32

标签: angularjs angular-promise angular-services angular-resolver

我有这个Beservice.js,在这里我正在处理后端响应。我的proxydata包括整个响应以及标头,配置,状态和数据。在这里,我只需要传递数据和状态,因此我将其分配给if条件中的变量,并使用此dfr.resolve(status,data);  它只会让我获得状态的价值,而不会获得数据。同时,dfr.resolve(data,status );可以获取数据,但不能获取状态,需要解决方案。不知道我在想什么。

BeService.JS

define([
  'angular',
  'services-module',
  'vruntime'
], function (angular, services, vRuntime) {
  'use strict';
  var $http, $q;
  var BeService = vRuntime.BaseClass.extend({
    asn: function (form) {
      var dfr = $q.defer();
      $http.post('upload', form, {
        headers: {'Content-Type': undefined}
      }).then(function (proxydata) {
        var data;
        var status;
        console.log(proxydata);
        if (proxydata) {
          status = proxydata.hasOwnProperty('status') ? proxydata.status : proxydata;
          data = proxydata.hasOwnProperty('data') ? proxydata.data : proxydata;

        }
        dfr.resolve(status,data);
      }, function (res) {
        var err;
        if (res.status !== 400 && res.status !== 500) {
          try {
            err = res.data || res.data.error || res.data.error_message;
          } catch (ex) {
            err = 'Web Service not available';
          }
          dfr.reject(err);
        } else {
          dfr.reject(res);
        }
      });
      return dfr.promise;
    }

  });
  services.service('BeService', ['$q', '$http', function (_$q_, _$http_) {
    $q = _$q_;
    $http = _$http_;
    return new BeService();
  }]);

  return new BeService();

});

0 个答案:

没有答案