Угловая функция синхронизации
У меня вопрос, как выполнить 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: они всегда возвращают обещание, которое вы можете использовать в своих целях.