Гарантийный запуск после окончания evalAsync - PullRequest
1 голос
/ 14 июня 2019

Совершенно новый для Javascript и Angular.

У меня есть два куска кода, выполняющихся в отдельных обратных вызовах, вызываемых из сторонних библиотек.(Обратные вызовы библиотеки пользовательского интерфейса Kendo)

Функция A () запускает $ scope.evalAsync

Функция B () предполагает, что данные были установлены с помощью A (), и ведет себя соответственно.

Эти две функции не могут реально взаимодействовать друг с другом.Различные области применения.

Содержимое функции B () должно дождаться завершения A (), прежде чем они смогут работать.

Есть ли способ добиться этого элегантно?Единственное, о чем я могу думать, это добавить еще одно логическое значение в $ rootScope и, возможно, приостановить функцию до тех пор, пока она не переключится с false на true.

Невозможно использовать обещания $ q, поскольку, как уже упоминалось, A и B оба являютсяобратные вызовы выполняются в разных областях сторонней библиотекой без связанной области.

1 Ответ

2 голосов
/ 14 июня 2019

Есть несколько способов добиться этого, но я бы, наверное, пошел с обещаниями.Два зла связаны между собой $rootScope.Вы можете сделать что-то вроде этого:

  1. Создать обещание в rootScope при запуске приложения.
  2. Когда функция A() завершится, разрешите это обещание.
  3. Убедитесь, что функция B() ожидает выполнения обещания перед выполнением.

Предполагается, что эти две функции будут выполняться только один раз.Если они должны запускаться несколько раз, необходима более сложная настройка.

...