我目前正在通过http请求访问数据库,但是在下面的函数中,我遇到了问题,因为请求在需要数据后完成。
$scope.submitUserName = function() {
console.log("button got clicked")
$http({
method: 'GET',
url: '/data/Graeham'
}).then(function successCallback(response) {
$scope.dataStuff = response;
console.log($scope.dataStuff);
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
console.log($scope.formData.userName);
console.log($scope.dataStuff);
for (var i = $scope.dataStuff.data.length - 1; i >= 0; i--) {
if ( $scope.formData.userName == $scope.dataStuff.data[i].ASSIGNED_TO && $scope.dataStuff.data[i].PRIMARY_UCID == "Y" ) {
console.log($scope.dataStuff.data[i]);
console.log($scope.dataStuff.data[i].UCID)
$scope.assignedData.push($scope.dataStuff.data[i]);
$scope.assignedUCID.push($scope.dataStuff.data[i].SUSPECT_UCID);
}
}
console.log($scope.assignedData)
};
在进入for循环之前,我无法弄清楚我需要向http发布什么语句才能使其完整。
答案 0 :(得分:3)
for循环必须位于successCallback
(或从那里调用的函数中)。
答案 1 :(得分:0)
JavaScript使用回调并且它没有阻塞,我认为你将它与标准命令式代码混淆。
我不知道您使用的是哪个框架,但这是您当前的流程:
successCallback
和errorCallback
),这两个参数是成功或错误时调用的两个函数(两个中的一个,而不是两个)正如@ linus-borg指出的那样,for循环需要在successCallback
内,否则它将在GET请求之后立即被调用。