如何仅在来自其他文件的代码完成之后才执行某些代码?

时间:2019-06-06 14:16:33

标签: javascript angularjs promise es6-promise

我正在使用AngularJS,并且有一个控制器来处理用户的身份验证。然后,我有几个进行API调用的控制器。这些API调用需要在身份验证代码完成后执行。

问题在于,由于我像下面这样并行加载控制器,所以我什至不知道哪个文件将首先加载并执行:

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

我认为这意味着需要在包括那些文件之前将标志或承诺(要知道何时完成身份验证)声明为全局标志。

但是我无法在文件之前和之前声明promise,因为我无法将resolve函数传递给它(因为还没有声明身份验证功能)。

解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

提供用于身份验证的服务,并将其注入到控制器中。在您的服务中,添加带有成功回调的身份验证功能。将此服务注入您的控制器。在您的控制器中,您可以在成功回调函数中执行登录。

服务

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
   });
});
相关问题