我有一个1.x AngularJS应用程序,需要同步执行2个SQL查询(一个接一个)。第一个对表进行更新,第二个对同一个表进行选择以获取更新的值。我遇到的问题是查询是异步执行的,偶尔会在更新完成之前执行select,然后我会回复"之前"数据而不是"之后"数据。我延迟了500毫秒,这对我来说很好,但是连接速度较慢的离岸人员间歇性地遇到问题。我的代码如下(简化以表达我的观点)。有关如何让第二个查询等到第一个查询完成的任何想法?
$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 :(得分:4)
$http返回在请求完成时解析的promise,所以:
$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;
});
};