Угловая функция синхронизации

У меня вопрос, как выполнить 3 функции (заявленные в сервисе) по порядку:

   function1();
   function2();
   function3();

Все функции содержат команды http (например, put или get). вот почему, если я использую приведенный выше код, функция 3 будет выполняться перед функцией 2. Я пытался связать функции с потом, но это тоже не помогло.

1 ответ

Решение

Вам нужно вернуть обещание, а затем использовать цепочку обещаний, потому что ваши функции асинхронные.

function1().then(function(response) {
   /* executes function2, if function1 return success */
   function2().then(function(response) {
      /* executes function3, if function2 return success */
      function3();
   }
}

В угловых документах ( https://docs.angularjs.org/api/ng/service/$q) вы можете увидеть, как вернуть обещание. В этом случае вы используете поставщика $http или $resource: они всегда возвращают обещание, которое вы можете использовать в своих целях.

Другие вопросы по тегам