2016-10-18 33 views
0

我有一個1.x AngularJS應用程序,需要同步執行2個SQL查詢(一個接一個)。第一個對錶進行更新,第二個對同一個表進行選擇以獲取更新的值。我遇到的問題是查詢是異步執行的,偶爾會在更新完成之前執行選擇,並且我會取回「before」數據而不是「after」數據。我放了500毫秒的延遲,對我來說工作得很好,但離岸人員連接速度較慢仍然間歇性地遇到問題。我的代碼如下(簡化,使我的觀點)。有關如何讓第二個查詢等待第一個查詢完成的任何想法?AngularJS中的同步SQL查詢

$scope.saveUser = function(origuid, uid, name) { 
    $http.get('/ccrdb/updateAdmin?origuid=' + origuid + '&uid=' + uid + '&name=' + name); 
    setTimeout(function() { 
     $http.get('/ccrdb/getAdmins').then(function(response) { 
      $scope.users = response.data.detail; 
     }); 
     return true; 
    }, 500); 
}; 
+0

我不想增加setTimeout的,因爲這並不能保證它會工作的100%時間可能會降低性能。我正在尋找不同的解決方案。 – metrangia

+0

不要手動構建查詢,查看使用GET構建查詢的文檔(通過第二個參數發送對象,在URL之後) –

+0

@Andrew Donovan - 謝謝,我會研究這一點。我擁有的是工作,但我一直在尋找改進我的代碼的方法。 – metrangia

回答

4

$http回報承諾時,請求完成這一決心,所以做:

$scope.saveUser = function(origuid, uid, name) { 
    $http.get('/ccrdb/updateAdmin?origuid=' + origuid + '&uid=' + uid + '&name=' + name) 
    .then(function() { 
     return $http.get('/ccrdb/getAdmins'); 
    }) 
    .then(function(response) { 
     $scope.users = response.data.detail; 
    }); 
}; 
+0

這很好用。謝謝您的幫助。 – metrangia