Пытаюсь разбираться с JS и первым ангуляром в частности. Написал такой код:
<button class="but" ng-click="Handler()">Button</button> <br />
<script>
var myApp = angular.module("myApp", []);
myApp.controller("myCtrl", function ($scope, $http) {
$scope.GetRespose = function () {
var temp = "foo"
$http.get('/Home/GetValue').seccess(function (data) {
alert(data);
temp = data;
})
return temp;
}
$scope.Handler = function () {
alert($scope.GetRespose())
}
})
</script>
При нажатии на кнопку вызывается функция на Handler() на скоупе, которая с помощью алерта выводит возвращаемое значение функции GetResponse(). В GetResponse() оглашается переменная "temp" , со значением "foo", после чего делается ajax-запрос, и мы получаем сообщение от сервера, после чего выводим это значение алертом и присваиваем его переменной temp, и в конце возвращаем эту переменную.
По идее, при нажатии на кнопку пользователь должен дважды получить модальное окно со значением, полученным на сервере: первый раз вызванное внутри GetRespone() и второе, вызванное в Handler(). Но на деле сначала выводится "foo", а потом строка, которую передал сервер. То есть GetResponse() успевает возвращать temp еще до того как получит ответ от сервера. Есть ли механизмы, с помощью которых можно приостановить выполнение функции до того как она получит ответ от сервера?