【发布时间】:2019-06-06 14:16:33
【问题描述】:
我正在使用 AngularJS,并且我有一个控制器来处理用户的身份验证。然后我有几个不同的控制器进行 API 调用。这些 API 调用需要在身份验证代码完成后执行。
问题是因为我像下面这样并行加载我的控制器,我什至不知道哪个文件会先加载和执行:
<script type="text/javascript" src="./app/controllers/authController.js"></script>
<script type="text/javascript" src="./app/controllers/softwareController.js"></script>
我认为这意味着需要在包含这些文件之前将标志或承诺(知道身份验证何时完成)声明为全局标志。
但是我不能在文件之外和之前声明承诺,因为我无法将解析函数传递给它(因为验证函数甚至还没有被声明)。
最好的方法是什么?
【问题讨论】:
-
什么是回调或事件发射 - 监听器?
-
我认为最好的选择是身份验证控制器在结束时发出一个事件,其他控制器监听它并检查它是否在初始化时完成(如果这些控制器可能在身份验证后加载完成了)。因此,您可以将逻辑放在一个函数中,如果用户通过身份验证并在事件侦听器上调用,该函数会在 init 上调用
标签: javascript angularjs promise es6-promise