2016-11-08 95 views
0

我按如下方式嘗試了$q服務,但瀏覽器仍未等待響應。我已經花了將近一天的時間來找出解決方案,我也嘗試了$timeout讓瀏覽器在angularjs中等待api響應/ http呼叫響應

login.controller("loginCtrl", ['$scope', '$rootScope', '$filter', '$window', '$http', 'APIService', 'localStorageService', 'doAlert', '$translate', '$q', '$timeout', 

    function ($scope, $rootScope, $filter, $window, $http, APIService, localStorageService, doAlert, $translate, $q, $timeout) { 
    $scope.isLogOut = true; 

    $(window).unload(function() { 
     $rootScope.$broadcast('onUnload'); 
    }); 
    $scope.$on('onUnload', function (e) { 
     var deferred = $q.defer(); 
     $http.get(url). 
       success(function (data, status, headers, config) { 
        deferred.resolve(data); 
       }). 
       error(function (data, status, headers, config) { 
        deferred.reject(status); 
       }); 
     return deferred.promise; 
    }); 
+0

只是在說一個例子:'$ http'already返回一個承諾。所以不應該需要'$ q'。 – Aer0

+0

也試過這個。但沒有運氣$ http.get(url).success(function(response){ response.data; }); – user2617611

+0

使用'$ http.then(函數(成功){...},函數(錯誤){...})'而不是成功和錯誤。您也可以查看文檔:https://docs.angularjs.org/api/ng/service/$http – Aer0

回答

0

這裏是我使用回調從我的工具處理數據回

function get(url, callback, obj) { 
    $http.get(url, obj) 
    .then(function (response) { 
     callback(response.data); 
    }, function() { 
     notification.error(PLEASE_CONTACT_SYS_ADMIN); 
    }); 
} 
+0

我越來越angular.min.js:81 ReferenceError:回調未定義。你可以用我的Angular $ scope詳細說明一下。$ on('onUnload')事件處理程序。這種新的。 – user2617611