簡體   English   中英

如何在完成不同文件的代碼后才能執行某些代碼?

[英]How to execute some code only after code from a different file has finished?

我正在使用AngularJS,我有一個控制器,我處理用戶的身份驗證。 然后我有幾個不同的控制器進行API調用。 這些API調用需要在身份驗證代碼完成后執行。

問題是,由於我像以下一樣並行加載我的控制器,我甚至不知道哪個文件將首先加載和執行:

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

我認為這意味着需要在包含這些文件之前聲明標志或承諾(知道何時完成身份驗證)作為全局標志。

但我無法在文件之外和文件之前聲明承諾,因為我無法將resolve函數傳遞給它(因為驗證函數甚至還沒有聲明)。

最好的方法是什么?

為身份驗證提供服務並將其注入您的控制器。 在您的服務中,使用成功回調添加用於身份驗證的功能。 將此服務注入您的控制器。 在控制器中,您可以在成功回調函數中執行登錄。

服務

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
   });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM