У меня есть некоторые функции в Angularjs, которые занимаются бизнесом, также называемые сервисами для получения данных, как я могу заставить мой код работать синхронно (что я надеюсь, что моя первая функция завершает выполнение следующей?)
angularJs
$scope.modalAction = function () {
$scope.UploadFile(),
$http.post(UriTempV2 + "/Template/InsertTemplate?OwnerRefId=" + $scope.OwnerRefId, $scope.newItem)
.then(function (response) {
//llenar newTemplate
CloseModal();
}, function (error) {
alert("Ocurrio un Error!!");
});
}
};
$scope.UploadFile = function () {
if (document.getElementById('file').files.length !== 0) {
var file = document.getElementById('file').files[0];
var uploadUrl = UriTempV2 + "/Template/TemplateFile";
var fd = new FormData();
fd.append('file', file);
fd.append('systemName', $scope.newItem.templateFile);
fd.append('instanceId', '698757BA-3D34-461D-A8FA-2D7E6BCDDC3C');
fd.append('enviroment', '90B28DB1-EE45-4F85-A1D4-0C0706737607');
fd.append('metaData', '{}');
$http({
url: uploadUrl,
method: "POST",
data: fd,
headers: { 'Content-Type': undefined }
}).then(function (response) {
if (response.status === 200) {
$scope.TemplateFile = response.data;
$scope.newItem.templateFile = $scope.TemplateFile.SystemName;
$scope.newItem.outputOriginalName = $scope.TemplateFile.OriginalName;
if ($scope.newItem.outPutType != 'bodyMail') {
$scope.CreateFields();
}
} else {
alert("Ocurrio un Error!!");
}
}, function (error) {
alert("Ocurrio un Error!!");
});
}
var templateFile = $scope.newItem.templateFile;
return templateFile
};
$scope.CreateFields = function () {
var uploadUrl = UriTempV2 + "/Template/Sync/" + $scope.newItem.id + "/" + $scope.newItem.templateFile;
$http.get(uploadUrl);
};
Идея состоит в том, что функция UploadFile выполняется, внутри этой функции CreateFields и, в конце этого, выполняется служба "/ Template / InsertTemplate? OwnerRefId ="
, когда последняяПо окончании будет выполнена функция CloseModal
.