保证在evalAsync完成后运行

时间:2019-06-14 14:52:26

标签: javascript angularjs race-condition

是Javascript和Angular的新手。

我有两个在独立的回调中运行的代码,它们是从第三方库中调用的。 (Kendo UI库回调)

函数A()启动$ scope.evalAsync

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

这两个功能不能真正相互交互。不同的范围。

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

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

不能使用$ q promises,因为如上所述,A和B都是由第三方库在没有链接范围的第三方库中运行的回调。

1 个答案:

答案 0 :(得分:2)

有几种方法可以实现这一目标,但我可能会兑现承诺。这两个评估通过$rootScope链接。您可以执行以下操作:

  1. 在应用程序启动时在rootScope上创建一个承诺。
  2. 函数A()完成后,解决该诺言。
  3. 确保函数B()在执行之前等待诺言得到解决。

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