Запросы Angularjs $ http передаются без завершения работы - PullRequest
0 голосов
/ 21 мая 2018

Привет, я использую angularjs 1.6 в своих проектах, и у меня проблема с запросами $ http, или я не знаю, что там происходит.Я попытаюсь объяснить проблему ниже:

app.controller('ctname', function($scope, fcname){

  $scope.calledFunc = function(){

    fcname.serviceFunction(12).then(function(response){
      if(response.data != null){
        //fill modal's model here 
      }
    });

    //Open modal
    $('#SomeModal').modal('show');

  };

})
.factory('fcname', function($http){
var fac = {};

fac.serviceFunction= function (someId) {
        return $http({
            url: '/Home/someBackEndMethod',
            data: JSON.stringify({ _someId: someId}),
            method: 'POST',
            headers: { 'content-type': 'application/json' }
        });
    };

return fac;
});

Что именно происходит, так это то, что мой модал открывается до того, как служба выполнит свою работу, поэтому мой модал иногда открывается пустым.Что я могу с этим поделать?

1 Ответ

0 голосов
/ 21 мая 2018

JavaScript и инфраструктура AngularJS используют неблокирующий асинхронный ввод-вывод. Последующий код всегда выполняется перед обработчиками событий, предоставленными для этих операций ввода / вывода.

Код, который необходимо выполнить после того, как необходимо поместить внутрь обработчик события:

app.controller('ctname', function($scope, fcname){

  $scope.calledFunc = function(){

    fcname.serviceFunction(12)
      .then(function(response){
        if(response.data != null){
           //fill modal's model here 
        }
    }).catch(function(error) {
        console.log(error);
    }).finally(function() {            
        //Open modal
        $('#SomeModal').modal('show');
    });

  };

})

Поместите код либо в исходный .then блок, либо в последующий цепочку блок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...