在 evalAsync 完成后保证 运行
Guarantee run after evalAsync finish
Javascript 和 Angular 相当陌生。
我有两段代码 运行 在单独的回调中,从第三方库调用。 (Kendo UI 库回调)
函数 A() 启动 $scope.evalAsync
函数 B() 假定数据已由 A() 设置并相应地运行。
这两个函数不能真正交互。不同的范围。
函数B()的内容需要等待A()完成后才能运行。
有没有办法优雅地实现这一点?
我唯一能想到的是向 $rootScope 添加另一个布尔值,并可能暂停一个函数,直到它从 false 变为 true。
不能使用 $q 承诺,因为如前所述,A 和 B 都是第三方库在不同区域的回调运行,没有链接范围。
有多种方法可以实现这一点,但我可能会信守诺言。这两个评估由 $rootScope
链接。你可以这样做:
- 应用程序启动时在 rootScope 上创建承诺。
- 当函数
A()
完成时,解决该承诺。
- 确保函数
B()
在执行之前等待 promise 被解析。
这假设两个函数只会运行一次。如果他们需要 运行 多次,则需要更复杂的设置。
Javascript 和 Angular 相当陌生。
我有两段代码 运行 在单独的回调中,从第三方库调用。 (Kendo UI 库回调)
函数 A() 启动 $scope.evalAsync
函数 B() 假定数据已由 A() 设置并相应地运行。
这两个函数不能真正交互。不同的范围。
函数B()的内容需要等待A()完成后才能运行。
有没有办法优雅地实现这一点? 我唯一能想到的是向 $rootScope 添加另一个布尔值,并可能暂停一个函数,直到它从 false 变为 true。
不能使用 $q 承诺,因为如前所述,A 和 B 都是第三方库在不同区域的回调运行,没有链接范围。
有多种方法可以实现这一点,但我可能会信守诺言。这两个评估由 $rootScope
链接。你可以这样做:
- 应用程序启动时在 rootScope 上创建承诺。
- 当函数
A()
完成时,解决该承诺。 - 确保函数
B()
在执行之前等待 promise 被解析。
这假设两个函数只会运行一次。如果他们需要 运行 多次,则需要更复杂的设置。