1. 程式人生 > >AngularJS中的http請求預設為非同步的,請問如何設定為同步請求呢?--使用$q

AngularJS中的http請求預設為非同步的,請問如何設定為同步請求呢?--使用$q

在工作時遇到這樣一個問題,在儲存資料時,需要對儲存的資料進行多次校驗(與後臺互動的校驗),如果校驗成功則執行儲存操作,如果不成功則返回提示。話不多說,直接上程式碼

var checkFun1 = function () {
    return $q(function (resolve,reject) {
        $http.post('product/checkSellingPriceLessThanCostPrice',salePolicy).success(function (response) {
            if(response.result === 'success'
){ resolve(response.data); }else{ reject(); } }); }); }; var checkFun2 = function () { return $q(function (resolve,reject) { $http.post('product/checkSellingPriceMoreThanGuidePrice',salePolicy).success(function (response) { if(response.result
=== 'success'){ resolve(response.data); }else{ reject(); } }); }); }; var checkFun3 = function () { return $q(function (resolve,reject) { $http.post('product/checkSellingPriceOutOfPriceRange',salePolicy).success(function (response) { if(response.result
=== 'success'){ resolve(response.data); }else{ reject(); } }); }); }; // 注意:城管提交時,如果不滿足條件則不能提交,系管不滿足條件只用提示即可,仍然可以提交 $q.all([checkFun1(), checkFun2(), checkFun3()]).then(function (data) { var invalidNum = 0; //data儲存的時校驗返回的資訊 data.forEach(function (item) { if(item){ invalidNum++; } }); if(invalidNum === 0){//當校驗全部通過時執行儲存操作 $scope.modifyProductSubmit(salePolicy); } });