Как выполнить какой-либо код только после того, как код из другого файла закончился? - PullRequest
0 голосов
/ 06 июня 2019

Я использую AngularJS, и у меня есть контроллер, где я выполняю аутентификацию пользователя. Тогда у меня есть несколько разных контроллеров, которые делают вызовы API. Эти вызовы API должны выполняться ПОСЛЕ того, как код аутентификации завершен.

Проблема в том, что, поскольку я загружаю свои контроллеры параллельно, как показано ниже, я даже не знаю, какой файл будет загружаться и выполняться первым:

<script type="text/javascript" src="./app/controllers/authController.js"></script>
<script type="text/javascript" src="./app/controllers/softwareController.js"></script>

Я думаю, это означает, что флаг или обещание (чтобы знать, когда аутентификация закончилась) должны быть объявлены ДО, включая эти файлы, как глобальный флаг.

Но я не могу объявить обещание вне и перед файлами, потому что я не смог бы передать ему функцию разрешения (потому что функция аутентификации еще не была бы объявлена).

Как лучше всего это сделать?

1 Ответ

0 голосов
/ 06 июня 2019

Создайте сервис для аутентификации и внедрите его в свои контроллеры.В вашем сервисе добавьте функцию аутентификации с успешным обратным вызовом.Добавьте эту услугу в ваши контроллеры.В ваших контроллерах вы можете выполнить вход в систему с помощью функции обратного вызова.

Сервис

angular.module('app', []).service('authService', function(){
   this.authenticate = function(successCallback) {
      // Perform authentication here
      successCallback();
   }
});

Контроллер

angular.module('app').controller('firstCtrl', function($scope, authService){
   authService.authenticate(function onSuccess(){
      // Authentication was successful
   });
});
...