在 evalAsync 完成后保证 运行

Guarantee run after evalAsync finish

Javascript 和 Angular 相当陌生。

我有两段代码 运行 在单独的回调中,从第三方库调用。 (Kendo UI 库回调)

函数 A() 启动 $scope.evalAsync

函数 B() 假定数据已由 A() 设置并相应地运行。

这两个函数不能真正交互。不同的范围。

函数B()的内容需要等待A()完成后才能运行。

有没有办法优雅地实现这一点? 我唯一能想到的是向 $rootScope 添加另一个布尔值,并可能暂停一个函数,直到它从 false 变为 true。

不能使用 $q 承诺,因为如前所述,A 和 B 都是第三方库在不同区域的回调运行,没有链接范围。

有多种方法可以实现这一点,但我可能会信守诺言。这两个评估由 $rootScope 链接。你可以这样做:

  1. 应用程序启动时在 rootScope 上创建承诺。
  2. 当函数 A() 完成时,解决该承诺。
  3. 确保函数 B() 在执行之前等待 promise 被解析。

这假设两个函数只会运行一次。如果他们需要 运行 多次,则需要更复杂的设置。