[英]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.