[操作疑難] angular deferred.promise 後 empty string 變成 nan

本帖最後由 gamezz 於 2017-2-26 21:40 編輯
  1. this.test = function(method, url, data){
  2.         $http({
  3.             headers: {'Content-Type': 'application/x-www-form-urlencoded'}
  4.             ,method: 'POST'
  5.             ,url: url
  6.             ,data: $httpParamSerializerJQLike(data)
  7.             ,timeout: ajaxTimeOut
  8.             ,responseType: 'json'
  9.         }).then(function successCallback(response) {
  10. //return emtpy string
複製代碼
  1. this.call = function(method, url, data){
  2.         var deferred = $q.defer();
  3.         $http({
  4.             headers: {'Content-Type': 'application/x-www-form-urlencoded'}
  5.             ,method: method
  6.             ,url: url
  7.             ,data: $httpParamSerializerJQLike(data)
  8.             ,timeout: ajaxTimeOut
  9.             ,responseType: 'json'
  10.         }).then(function successCallback(response) {
  11.             //become NAN
  12.              deferred.resolve(response.data);
  13.         }, function errorCallback(response) {
  14.             deferred.reject(response.data);
  15.         });
  16.         return deferred.promise;
複製代碼
唔知點解, 經過$q.defer後,ajax json empty field會變成 nan ... ?
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

$http 本身已經係promise , 點解要包多一層?

TOP

TOP

本帖最後由 gamezz 於 2017-2-26 23:45 編輯

回覆 2# YuiNarusawa


因為我想做一個共用service去處理如api error, eg: login token error redirect to login page.
& control api host name & popup error message.
(using in ionic)

睇多兩睇,原來root個message 係無變NaN

TOP

就算整service都無必要包多層promise
  1. import ReturnCode from "./ReturnCode";

  2. class BaseService {
  3.     constructor($http, $q) {
  4.         this.$http = $http;
  5.         this.$q = $q;
  6.     }

  7.     post(url, params = {}, config = {}) {
  8.         return this.$http.post(url, params, config).then((result) => {
  9.             let data = result.data;
  10.             if (data && data.code && data.code === ReturnCode.SUCCESS) {
  11.                 return data.value;
  12.             } else {
  13.                 return this.$q.reject(data.message);
  14.             }
  15.         }).catch((response) => {
  16.             return this.$q.reject(response.statusText || response || "unknown error");
  17.         });
  18.     }
  19. }
  20. BaseService.$inject = ['$http', '$q'];
  21. export default BaseService;
複製代碼

TOP

相關文章