【发布时间】:2016-04-06 16:52:39
【问题描述】:
我的 Angularjs 应用程序有一个控制器和服务 java 脚本。服务使用 $http 调用 WCF REST 服务。我需要根据 For 循环中使用的对象中的数据在 For 循环中调用多个服务。下面是场景:
“我想将几个文件上传到服务器上的文件夹并将文件名保存到数据库。我有一组用户选择上传的文件详细信息。我想验证数据库中已经存在的文件名(基于 EntityId)然后在上传到服务器之前重命名新文件。”下面是 for 循环和服务调用:
for (var i = 0; i < filesDataToUpload.length; i++) {
var fileDataToUpload = filesDataToUpload[i];
FileUploadService.GetUploadDetailsByEntityId(fileDataToUpload.ENTITY_ID).success(function (response) {
$scope.UploadDetailsByEntity = response;
});
var newFileName = VerifyAndRenameBeforeSave(fileDataToUpload, $scope.UploadDetailsByEntity);
FileUploadService.UploadFile(newFileName, fileData).success(function (data) {
//some code
}).error(function (error) {
$scope.error("An error occured while uploading file -" + error.ExceptionMessage);
isSuccess = false;
});
FileUploadService.InsertUploadDetails(FileUploadDetails).success(function (data) {
//some code
}).error(function (error) {
$scope.error("An error occured while creating the Entity -" + error.ExceptionMessage);
isSuccess = false;
});
}
问题: 问题:
我的问题是 - 我没有从第一个服务调用中得到响应,我想在后续验证和重命名文件以及保存到数据库的方法中使用该响应。我发现是因为 $http 的 promise 行为。所以我移动了我的文件验证和重命名方法,并将部分功能保存在
.success(function(response){
//verify that file does not already exists and rename it to the next number of file
//upload the file to the server
//Save new file name and other details to the database
}
但它仅适用于第一次,而不适用于 for 循环的下一次迭代。对于第二次迭代,它会检索第一个 EntityId 的记录。
谁能帮我解决这个问题?
【问题讨论】:
标签: javascript angularjs rest http angular-promise